15. 3Sum

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Solution {
    public List<List<Integer>> threeSum(int[] nums) {
        int size=nums.length;
        List<List<Integer>> res=new ArrayList<List<Integer>>();
          if(size<3)
            return res;
        Arrays.sort(nums);
        size=nums.length;
        for(int i=0;i<size-2;i++)
        {
            int left=i+1;
            int right=size-1;
            while(left<right)
            {
//                System.out.println("left is :" + left);
//                System.out.println("right is :" + right);
                if(nums[i]+nums[left]+nums[right]==0)
                {
                    //将结果加入到res当中 
                    List<Integer> temp=new ArrayList<Integer>();
                    temp.add(nums[i]);
                    temp.add(nums[left]);
                    temp.add(nums[right]);
                    res.add(temp);
                    while(left<right&&nums[left+1]==nums[left])
                        left++;
                    while(left<right&&nums[right-1]==nums[right])
                        right--;
                    left++;
                    right--;
                    
                }
                else if(nums[i]+nums[left]+nums[right]>0)
                {
                    right--;
                }
                else
                {
                    left++;
                }
            }
            while(i+1<size&&nums[i+1]==nums[i])
                i++;
        }
        return res;
        
    }
}
原文地址:https://www.cnblogs.com/aguai1992/p/5758332.html