007. 数组中和为 0 的三个数
class Solution {
public List<List<Integer>> threeSum(int[] nums) {
List<List<Integer>> ans =new ArrayList();
Arrays.sort(nums);
int n=nums.length;
for(int i=0;i<n;i++)
{
if(i>0&&nums[i]==nums[i-1])continue;//因为排好序 以相同的数为起点 得到的三元组必定重复
for(int j=i+1,k=n-1;j<k;j++)
{
if(j>i+1&&nums[j]==nums[j-1])continue;
while(nums[i]+nums[j]+nums[k]>0&&k>=j+2)k--;
if(nums[i]+nums[j]+nums[k]==0)ans.add(Arrays.asList(nums[i],nums[j],nums[k]));
}
}
return ans;
}
}