方法一:暴力法
时间复杂度:N平方
空间复杂度:1
思路:遍历列表,对比这个元素后面有没有满足的元素
def twoSum(self, nums, target):
#暴力方法,复杂度n的平方
for i in range(0,len(nums)-1):
a = nums[i]
for j in range(i+1,len(nums)):
b = nums[j]
sum = a + b
if sum == target:
return [i,j]
方法二:用字典来存这个列表,以空间换时间
时间复杂度:N
空间复杂度:N
def twoSum(self, nums, target):
#方法二:先定义一个字典来存放,以空间换时间
dict = {}
for i in range(0,len(nums)):
a = target - nums[i]
if a in dict.values():
for key,value in dict.items():
if value == a:
return [key,i]
else:
dict[i] = nums[i]
对比一下两次的执行时间,可以看到方法二444毫秒明显比暴力法4108毫秒快很多