首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

图解算法第一弹:两数之和 了解一下?

文 | 极客日记

1. 题目描述

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9

所以返回 [0, 1]

2. 解题思路

题目的意思是想让我们从给定的 nums 数组中,找到两个相加等于 target 的数 a 和 b 并返回这两个数在数组中对应的下标 i 和 j。

具体思路如下:

1. 定义一个映射关系map,map 中保存的数据结构形如 ,其中 k∈[0, nums.length);

2. 遍历给定的数组

a. 如果 nums[k] 存在于 map 的 key键中,则 key键 对应的 value值和当前的 k值 就是我们要找的两个下标;

b. 如果 nums[k] 不存在于 map 的 key键中,则把 保存到 map中;

3. 循环结束。

3. 算法动图

假设给定数组 nums 为 [2, 7, 11, 15],目标值 target 等于9,依照上面给出的算法,运行过程如下图:

图解两数之和

4. 代码实现

个人精力有限,目前只有 Java 代码的算法实现,后续可能会考虑增加其他语言的实现,敬请期待哦~

4.1 Java实现

算法是计算机编程的灵魂,但其枯燥与艰涩也非常让人头疼,笔者希望通过动画的方式,能让小伙伴们形象地感受到算法的魅力。如果你有任何疑惑,可以私信或留言哦!欢迎大家点赞、转发、收藏,我们下期再见,bye~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190809A0KVJ500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券