春招第一步,算法伴我行
重新做一下之前的leetcode,加深一下印象
题目描述:
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
思路:
需要注意,题目中有描述:假定只有一个结果,因此最后可以直接返回结果就可以,不要遍历所有情况。
两次遍历,可以解决,没必要,太复杂。
线性时间内遍历所有数字,求差,使用一个字典来存储每一个差的位置。在每一次遍历的时候,在字典中查找是否差出现过,不过需要注意设定字典。
代码如下:
class Solution:
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
num_dict = {}
for i, x in enumerate(nums):
y = target - x
if y not in num_dict:
num_dict[x] = i
else:
return [num_dict[y], i]