给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。
注意:答案中不可以包含重复的三元组。
示例 1:
输入:nums = [-1,0,1,2,-1,-4] 输出:[[-1,-1,2],[-1,0,1]]
示例 2:
输入:nums = [] 输出:[]
示例 3:
输入:nums = [0] 输出:[]
提示:
0 <= nums.length <= 3000
-105 <= nums[i] <= 105
双指针
class Solution:
def threeSum(self, nums: List[int]) -> List[List[int]]:
ans=[]
n=len(nums)
nums.sort()
for i in range(n):
left=i+1
right=n-1
if nums[i]>0:
break
if i>=1 and nums[i]==nums[i-1]:
continue
while left<right:
total=nums[i]+nums[left]+nums[right]
if total>0:
right-=1
elif total<0:
left+=1
else:
ans.append([nums[i],nums[left],nums[right]])
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
return ans