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 47 48 49
|
public class ID15三数之和 { public static List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> res = new ArrayList<>();
Arrays.sort(nums); for (int i = 0; i < nums.length-2; i++) { if(i>0&&nums[i]==nums[i-1])continue; int l=i+1; int r=nums.length-1; while (l<r) { int sum = nums[i] + nums[l] + nums[r]; if(sum==0) { res.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 res; }
public static void main(String[] args) { List<List<Integer>> lists = threeSum(new int[]{0, 0, 0,0 }); System.out.println("lists = " + lists); } }
|