
在做力扣第一题的时候我刚开始用了暴力循环写了两层循环去求和但是由于后续知识的学习我了解到哈希表的用处。哈希表在python中的表现是python的字典就是通过键值对来查找我们所需要的信息因此这道题我们的思想可以转变成通过用哈希表存放那么后续的循环就只需要一层再去哈希表中对比有无相同的数值。就这道题的简单理解如下# 假设题目是nums [2, 7, 5], target 9。 # 你的手里有一个空的小本本 hash_map {}。 # 第一轮遇到了数字 2 (下标0) # 先别急着记账 先看看小本本上有没有我要找的“另一半”。 # 我心里想我要凑成 9我现在是 2我需要找一个 7。 # 问小本本“你见过 7 吗” # 小本本“没见过空的。” # 那就记账 # 在本子上写下{2: 0} 意思是数字2在第0号位。 # 第二轮遇到了数字 7 (下标1) # 先别急着记账 先看看小本本上有没有我要找的“另一半”。 # 我心里想我要凑成 9我现在是 7我需要找一个 2。 # 问小本本“你见过 2 吗” # 小本本“见过 就在第 0 号位” # 任务完成 # 既然找到了直接把两个位置报出来[0, 1]。 # 游戏结束不用往后看了。from typing import List class Solution: def twoSum(self, nums: List[int], target: int) - List[int]: hash_map {} #相当于创建一个小本子里面去记录我见到过的东西和它的顺序 for i,element in enumerate(nums): #enumerate函数是用于取出可遍历对象的下标和它当前的元素的 diff target-element #这个操作是去算差值 if diff in hash_map: #这个就是去找小本本里面有没有之前记录过的数 return [hash_map[diff],i] #有的话就返回当时这个数的下标在字典里面根据键找值字典名[键名]i是当前下标 hash_map[element] i #没有的话就继续写入小本本里面方便后续查找