题目描述:
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution_2(object):
def twoSum(self, nums:list, target: int) -> list:
num_map = {}
for idx,num in enumerate(nums): # 枚举遍历列表
diff_num = target - num
if diff_num in num_map:
return [num_map[diff_num],idx]
else:
num_map[num] = idx
return []
a = Solution_2()
print(a.twoSum([2,7,11,15],9))
我们首先建一个字典,用来存储我们遍历过的数和对应的下标。
1. 算出当前数字和目标值的差值
2.检查差值是否在字典中
3.如果差值不在字典中,就将当前数字的值作为key,其索引作为value保存到字典中
直到找到位置。如果都没有则返回空列表。