题目描述:
给定一个包含 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]
输出:[]
        思路描述:
先排序,保证有序,然后找到所有的三个元素的组合,再去重。
代码:
            
            
              java
              
              
            
          
          class Solution {
    public List<List<Integer>> threeSum(int[] nums) {
        int n=nums.length;
        Arrays.sort(nums);
        Set<List<Integer>> set=new HashSet<>();
        for(int i=0;i<n;i++){
            List<Integer> list=new LinkedList<>();
            int left=i+1;
            int right=n-1;
            while (left<right){
                if(nums[left]+nums[right]+nums[i]>0){
                    right--;
                } else if (nums[left] + nums[right] + nums[i] < 0) {
                    left++;
                }else{
                    list.add(nums[i]);
                    list.add(nums[left]);
                    list.add(nums[right]);
                    set.add(list);
                    list=new LinkedList<>();
                    left++;
                    right--;
                }
            }
        }
        return new LinkedList<>(set);
    }
}