三数之和

题目描述:给定一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 找出所有满足条件且不重复的三元组。

示例:例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],

满足要求的三元组集合为:

[

  [-1, 0, 1],

  [-1, -1, 2]

]

java代码

class Solution {

    public List> threeSum(int[] nums) {

        List> ans = new ArrayList();

        Arrays.sort(nums);

        int len = nums.length;

        if (nums == null || len < 3) return ans;

        for (int i=0;i

            if(nums[i]>0) break;

            if (i>0 && nums[i]==nums[i-1]) continue;

            int L = i + 1;

            int R = len - 1;

            while (L < R) {

                int sum = nums[i] + nums[L] + nums[R];

                if (sum == 0) {

                    ans.add(Arrays.asList(nums[i],nums[L],nums[R]));

                    while (L

                    while (L

                    L++;

                    R--;

                }

                else if (sum < 0) L++;

                else if (sum > 0) R--;

            }

        }

        return ans;

    }

}

你可能感兴趣的:(三数之和)