一、题目
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。
注意:答案中不可以包含重复的三元组。
分析:
- 首先可以对数组进行排序;
- 然后依次对数组中的值进行固定,然后使用左右指针指向该固定值
nums[i]
后面的两端,记为nums[l]
,nums[r]
,计算三者的和是否为0,满足则记录结果; - 如果当前
nums[i]
的值大于0,则其后的所有值均大于0,所以三数之和必然会大于0,结束循环; - 如果
nums[i]==nums[i-1]
,该数字重复,会导致结果重复,跳过; - 当
sum==0
时,nums[l]==nums[l+1]
,会导致结果重复,应跳过,l++
&