代码实现
注意到由于返回的是索引,所以进行排序处理不是一个好办法。
解法一:暴力求解
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
