数组中找三个数和为0的结果集 1 // 解法一:先排序 然后固定一个值 然后用求两个数的和的方式 2 public static List
> threeSum(int[] nums) { 3 List
> res = new ArrayList<>(); 4 if (nums.length < 3) { 5 return res; 6 } 7 Arrays.sort(nums); 8 // 遍历到倒数第三个就可以了 9 for (int i = 0; i < nums.length - 2; i++) {10 // i去重复11 if (i != 0 && nums[i] == nums[i - 1])12 continue;13 int j = i + 1;14 int k = nums.length - 1;15 while (j < k) {16 if (nums[i] + nums[j] + nums[k] == 0) {17 List list = new ArrayList<>();18 list.add(nums[i]);19 list.add(nums[j]);20 list.add(nums[k]);21 res.add(list);22 j++;23 k--;24 // 去重复25 while (j < k && nums[j - 1] == nums[j]) {26 j++;27 }28 while (j < k && nums[k] == nums[k + 1]) {29 k--;30 }31 } else if (nums[i] + nums[j] + nums[k] < 0) {32 j++;33 } else {34 k--;35 }36 }37 }38 return res;39 }