代码实现
注意到由于返回的是索引,所以进行排序处理不是一个好办法。
解法一:暴力求解
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
length=len(nums);
for i in range(length):
for j in range(i+1,length):
if nums[i]+nums[j]==target:
return [i,j]
有很多重复的比较过程。
虽然实现很简单,但是在空间和时间的占用上都不容乐观。
解法二:使用字典
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
length=len(nums)
dic={}
for i in range(length):
number=target-nums[i]
if number in dic:
return [i,dic[number]]
else:
dic[nums[i]]=i
我的错误:开始的时候先遍历list,建立一个完整的字典,然后再遍历一遍,判断number是否在字典中,这种方法是错误的,因为会重复的使用元素,比如target=6,list中有一个元素为3,导致结果出错。
思考
解法二相比解法一使用字典,占用的空间增加,时间减少。
list.sort()
没有返回值,就地修改list