Description
给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。
你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 0 到 n-1。
解1:
使用两层的嵌套循环,
时间复杂度: O(n^2)
空间复杂度: O(1)
def twoSum(self, numbers, target):
for i in range(len(numbers) - 1):
for j in range(i + 1, len(numbers)):
if numbers[i] + numbers[j] == target:
return [i,j]
return []
注意循环时的边界值就好
解2:
使用dictionary,
时间复杂度: O(n)
空间复杂度:O(n)
def twoSum(self, numbers, target):
dict = {}
for i in range(len(numbers)):
if numbers[i] in dict:
return [dict[numbers[i]], i]
else:
dict[target - numbers[i]] = i
return []