question:
解法1:双指针
代码很简短,但是复杂度比较高
def twoSum(self , numbers , target ):
for a in range(len(numbers)-1):
for b in range(a+1,len(numbers)):
if numbers[a] + numbers[b] == target:
return [a+1,b+1]
解法2:哈希表,边存边查,时间复杂度低
def twoSum(self , numbers , target ):
# 建立一个哈希表
hashmap = {}
# 从数组的第一个数开始遍历
for i in range(len(numbers)):
r = target-numbers[i]
# 如果目的值在哈希表中
if r in hashmap:
# 就返回对应下标
return [hashmap[r]+1,i+1]
else:
# 如果没有,就将当前下表对应的数存放到哈希表中
hashmap[numbers[i]] = i
解法3:字典模拟哈希求解,遍历
def twoSum(self , numbers , target ):
dict = {}
for i , num in enumerate(numbers):
if target-num in dict:
return [dict[target-num]+1,i+1]
dict[numbers[i]] = i