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 41 42 43 44 45 46
| import java.util.*;
public class ThreeSum {
public static List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> ans = new LinkedList<>(); if (nums.length < 3) return ans; Arrays.sort(nums); for (int i=0; i<nums.length; i++) { int left = nums[i+1]; int right = nums[nums.length-1]; while (left < right) { if (nums[i] + nums[left] + nums[right] == 0) { ans.add(Arrays.asList(nums[i], nums[left], nums[right])); } } } return ans; }
public static void main(String[] args) { for (List<Integer> l : threeSum(new int[]{-4,-2,-2,-2,0,1,2,2,2,3,3,4,4,6,6})) { for (int i: l) { System.out.print(i + " "); } System.out.println(); } } }
|