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].
UPDATE (2016/2/13):
The return format had been changed to zero-based indices. Please read the above updated description carefully.
Python:
#枚举法, 时间复杂度O(n^2)
class Solution(object):
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
len_nums = len(nums)
for i in range(len_nums):
for j in range(i + 1, len_nums):
if nums[i] + nums[j] == target:
return [i, j]
# 利用字典储存每个值对应符合要求的数字,查找字典 时间复杂度O(n)
class Solution(object):
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
len_nums = len(nums)
match_dict = {}
if len_nums <= 1:
return False
for i in range(len_nums):
if nums[i] in match_dict:
return [i, match_dict[nums[i]]]
else:
match_dict[target - nums[i]] = i