classSolution{ public List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> ans = new ArrayList<>(); int size = nums.length; Arrays.sort(nums); for (int i = 0; i <= size - 2; i ++) { if (i > 0 && nums[i] == nums[i - 1]) continue; //去重 int l = i + 1; int r = size - 1; while (l < r) { if (nums[i] + nums[l] + nums[r] > 0) { r --; } elseif (nums[i] + nums[l] + nums[r] < 0) { l ++; } else { List<Integer> tem = new ArrayList<>(); tem.add(nums[i]); tem.add(nums[l]); tem.add(nums[r]); ans.add(tem); while (l < r && nums[l] == nums[l + 1]) l ++; //去重 while (l < r && nums[r] == nums[r - 1]) r --; //去重 l ++; r --; } } } return ans; } }