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, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
(1)用字典 实质上也是用到了哈希表,因为字典是用哈希表实现的。
class Solution:
def twoSum(self, nums: 'List[int]', target: 'int') -> 'List[int]':
dictionary={value:index for (index,value) in enumerate(nums)}
for(i,v) in enumerate(nums):
targetNum=target-v
if targetNum in dictionary and dictionary[targetNum]!=i:
return [i,dictionary[targetNum]]
(2)哈希
class Solution:
def twoSum(self, nums: 'List[int]', target: 'int') -> 'List[int]':
myHash={}
for index, value in enumerate(nums):
if target-value in myHash:
return [index,myHash[target-value]]
myHash[value]=index
上述两种方法时间一样,区别在于第一种方法遍历两次(有两个for),第二种方法遍历一次(只有一个for)。