classSolution(object): deftwoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ for i inrange(len(nums)-1): for j inrange(i+1, len(nums)): if nums[i]+nums[j]==target: return [i,j]
第二种(复杂度$O(n)$):
1 2 3 4 5 6 7 8 9 10 11 12 13 14
classSolution(object): deftwoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ d = {} for i inrange(len(nums)): if nums[i] in d: return [d[nums[i]], i] rest = target - nums[i] d[rest] = i
classSolution(object): defthreeSum(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ res = [] nums.sort() for i inrange(len(nums)-2): # 去重 if i>0and nums[i]==nums[i-1]: continue left = i+1 right = len(nums)-1
while left < right: sum = nums[i]+nums[left]+nums[right] ifsum==0: res.append([nums[i],nums[left],nums[right]])
# 这里的2个while循环在去重 while left < right and nums[left]==nums[left+1]: left += 1 while left < right and nums[right]==nums[right-1]: right -= 1
left += 1 right -= 1 elifsum < 0: left += 1 else: right -= 1 return res