给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。
分析
这是个简单题,就不止要写对还有需要写好
- 第一思路是讲所有元素hash后,然后再遍历找到对应的剩余值,对于剩余值和原来值相等的情况,需要单独处理, 保证这个值是有两个元素在,需要用的数据结构,字典,key是数字,value是一个列表,保存元素所在的下标
- 优化思路是在一遍遍历的同时,就可以判断剩余值是否在已经遍历过的字典里,需要用到的数据结构,字典,key是数字,value是下标
假设每种输入只会对应一个答案,这样找到一个即可返回
数组中同一个元素在答案里不能重复出现,答案中是不同的元素对应的下标
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
# 两数之和,并且只存在一个有效答案,所以可以边遍历,边判断,可能都不要遍历完
# 定义一个字典,key是元素值,value是对应的下标
num_to_index = {}
for index, num in enumerate(nums):
# 判断之前是否有对应的剩余值
if target - num in num_to_index:
return [ num_to_index[target - num], index]
num_to_index[num] = index
return None






网友评论