1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| class Solution { public List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> list = new ArrayList<>(); if(nums == null || nums.length < 3) { return list; }
Arrays.sort(nums); int sum = 0; for (int i = 0; i < nums.length - 2; i++) { int l = i + 1; int r = nums.length - 1; if (nums[i] > 0) { break; } if (i == 0 || nums[i] != nums[i - 1]){ while (l < r) { sum = nums[i] + nums[l] + nums[r]; if (sum == 0) { list.add(Arrays.asList(nums[i], nums[l], nums[r])); while (l < r && nums[l] == nums[l + 1]) { l++; } while (l < r && nums[r] == nums[r - 1]) { r--; } l++; r--; }else if (sum < 0) { l++; }else{ r--; } } } } return list; } }
|