题目:
解析:
暴力法:
直接简单粗暴的遍历这个list列表,通过两个for循环,寻找满足的数,但是这样的话,list的遍历效率比较低,执行速度较慢,大概1000ms,打败33%的人。
哈希表:
在python中,字典就是通过哈希表实现的,所以,要想使用哈希表,直接使用字典dictionary即可,执行只需要60ms,打败90%的人。
代码:
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
dic = {}
for i, num in enumerate(nums):
if target - num in dic:
return [i, dic.get(target - num)]
dic[num] = i
小结:
由于本例中正确答案只有一个,即真正满足的只有一组,所以,可以将数值作为key,因为数值重复的都不可能满足条件,所以可以直接覆盖。