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
| class Solution { public List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> res = new ArrayList<>(); Arrays.sort(nums); for(int i = 0; i < nums.length; i ++) { if(i > 0 && nums[i] == nums[i - 1]) { continue; } int left = i + 1, right = nums.length - 1; while(left < right) { if(nums[i] + nums[left] + nums[right] == 0) { res.add(Arrays.asList(nums[i], nums[left], nums[right])); left ++; right --; while(left < right && nums[left] == nums[left - 1]) { left ++; } } else if(nums[i] + nums[left] + nums[right] < 0) { left ++; } else right --; } } return res; } }
|