one-pass Hash Table
class Solution:
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
d = {}
for i in range(len(nums)):
complement = target - nums[i]
if(complement in d and d[complement] != i):
return [d[complement], i]
d[nums[i]] = i
d[nums[i]] = i 这条语句必须放在后面.因为当前元素的目标元素在dict中,若不在,当前元素再放入dict中.若放在前面可能出现当前元素和目标元素相等后,当前元素更新dict中目标元素,导致无解
如:[3,3]