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

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

参考了大神们的解法,通过哈希来求解,这里通过字典来模拟哈希查询的过程。

个人理解这种办法其实就是字典记录了 num1 和 num2 的值和位置,而省了再查找 num2 索引的步骤。

不需要 mun2 不需要在整个 dict 中去查找。可以在 num1 之前的 dict 中查找,因此就只需要一次循环可解决。

1
2
3
4
5
6
def twoSum(nums, target):
hashmap={}
for i,num in enumerate(nums):
if hashmap.get(target - num) is not None:
return [i,hashmap.get(target - num)]
hashmap[num] = i #这句不能放在if语句之前,解决list中有重复值或target-num=num的情况

通过字典的方法,查找效率快很多,执行速度大幅缩短,共 12ms。

在这里插入图片描述