Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution.
Example:
Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1].
class Solution(object):
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
dic = {}
li = []
for i in range(len(nums)):
if target-nums[i] in dic:
li = [dic[target-nums[i]], i]
#li.append(i)
#li.append(dic[target-nums[i]])
else:
dic[nums[i]] = i
else:
return li
本题的关键是hashmap,即将值作为关键字key,而索引作为值value。然后每迭代一次,在map中寻找是否存在想要的key值。
如例子所示,首先遍历到array中的2,期望在map中得到7,但是map空,循环继续到下一个值7;遍历到7,期望在map中得到2,OK,在map中找到,返回索引值结束。
但若target = 20,需返回[0, 1, 2],待改进