classSolution{ public List<List<Integer>> threeSum(int[] nums) { Arrays.sort(nums); List<List<Integer>> res = new ArrayList<>(); HashSet<String> set = new HashSet<>(); for (int i = 0; i < nums.length; i++) {
if (nums[i] > 0) { break; }
if (i > 0 && nums[i] == nums[i - 1]) { continue; }
int left = i + 1; int right = nums.length - 1; while (left < right) { if (left < 0) { return res; } int t = nums[left] + nums[right]; if (t + nums[i] > 0) { right -= 1; } elseif (t + nums[i] < 0) { left += 1; } else { String key = "" + nums[i] + nums[left] + nums[right]; if (!set.contains(key)) { res.add(Arrays.asList(nums[i], nums[left], nums[right])); } set.add(key);
while (left < right && nums[left] == nums[left + 1]) { left++; }