public ArrayList<ArrayList<Integer>> threeSum(int[] nums) {
        ArrayList<ArrayList<Integer>> res  = new ArrayList<ArrayList<Integer>>();
        if(nums.length<3||nums==null){
        return res;}
        Arrays.sort(nums);

       for(int i=0;i<nums.length-2;i++){
           if(i!=0&&nums[i]==nums[i-1]){
               continue;  //排除【0,0,0,0】
           }
              int start = i+1;
              int last = nums.length-1;

            while(start<last){
                int sum = nums[start]+nums[last]+nums[i];
            if(sum==0){
               ArrayList<Integer> list = new ArrayList<Integer>();
                list.add(nums[i]);
                list.add(nums[start]);
                list.add(nums[last]);
                start++;
                last--;
                res.add(list);
                while(start<last&&nums[start]==nums[start-1]){
                    start++;
                }//排除重复的
                while(start<last&&nums[last] == nums[last+1]){
                    last--;
                }//排除重复的
            }
            else if(sum>0){
                last--;
            }
            else{
                start++;
            }}

        }return res;
    }

results matching ""

    No results matching ""