数组+双指针
要学会向简单的已知的,已会的问题转化
关于去重这一点,是先有结果再去重!
class Solution:
def threeSum(self, nums) :
n = len(nums)
if n<3:
return None
nums.sort()
self.ans = []
for i in range(n-2):
if i>0 and nums[i]==nums[i-1]:
continue
self.twosum(nums,i+1,n-1,nums[i])
return self.ans
def twosum(self,nums,low,high,target):
while low<high:
if nums[low]+nums[high]==-target:
self.ans.append([target,nums[low],nums[high]])
while low < high and nums[low] == nums[low + 1]:
low += 1
while low < high and nums[high] == nums[high - 1]:
high -= 1
low+=1
high-=1
elif nums[low]+nums[high]<-target:
low+=1
else:
high-=1