2分钟
LeetCode算法手记:1.两数之和
梦开始的地方。
思路
既然存在nums[i]和nums[j](0 <= i < j < nums.length),使得nums[i]与nums[j]的和为target。那么可以在遍历nums的过程中,使用字典记录当前target-nums[j](即nums[i])的值和对应的下标,那么,在后续遍历至nums[j]的过程中,自然能够通过target-nums[j]获得nums[i]所对应的下标。
思路递推
以实例一中的nums = [2,7,11,15], target = 9为例:
- 初始化map,开始遍历,i = 0,nums[i] = 2,nums[j] = target - nums[i] = 7。
- map中不存在key为7的键值对,将当前nums[i]作为key,下标i作为value放入map,至此map中包含键值对:
- 2 -> 0
- i = 1,nums[i] = 7,nums[j] = target - nums[i] = 2。
- map中已存在key为2的键值对,通过2获得对应的下标,结合当前i直接返回下标元组[0,1]。