#1. 两数之和
题目
给定一个数组nums,一个target,返回数组中两个相加等于target的数的索引,用List表示。
- 每一个input都有一个解。
解答
哈希表解法
创建dict() 记录数字的val:index。循环List中的每一个元素nums[i],如果target - nums[i]已经出现在dict里,返回相应索引。
class Solution(object):
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
records = dict()
for idx, val in enumerate(nums):
left = target - val
if left in records:
return [idx, records[left]]
else:
records[val] = idx
收获
- 本题的精髓在于:两个相加等于target的数必定一前一后出现,所以对于每一个数,check之前子数组中是否存有余数,必定可以找到这两个相加得target的数。
- enumerate方法用在数组上,可以得到索引,值。