文 | 极客日记
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~
领取专属 10元无门槛券
私享最新 技术干货