class Solution:
def threeSum(self, nums: List[int]) -> List[List[int]]:
nums.sort()
ans=[]
n=len(nums)
for i in range(n-2):
x=nums[i]
if i>0 and x==nums[i-1]:
continue
if x+nums[i+1]+nums[i+2]>0:
break
if x+nums[-2]+nums[-1]<0:
continue
j=i+1
k=n-1
while j<k:
s=x+nums[j]+nums[k]
if s>0:
k-=1
elif s<0:
j+=1
else:
ans.append([x,nums[j],nums[k]])
j+=1
while j<k and nums[j]==nums[j-1]:
j+=1
k-=1
while k>j and nums[k]==nums[k+1]:
k-=1
return ans
三数之和优化简化后的排序加双指针
最新推荐文章于 2024-07-09 23:56:48 发布