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.
方法一:用二重循环查找list
class Solution(object):
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
for i in range(len(nums)):
s = target - nums[i]
xnums = nums[i+1:]
if s in xnums:
return [i,xnums.index(s)+i+1]
Runtime: 1168 ms
Memory Usage: 12.5 MB
方法二:用一次循环构建字典,再用关键字查询位置
class Solution(object):
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
m = dict()
for i in range(len(nums)):
c = target - nums[i]
if c in m:
return [m[c], i]
m[nums[i]] = i
Runtime: 32 ms
Memory Usage: 13.1 MB
可见查询字典是否有关键字比直接查询列表是否有该元素要快的多。