LeetCode15——3Sum

数组中找三个数和为0的结果集
1
// 解法一:先排序 然后固定一个值 然后用求两个数的和的方式 2 public static List<List<Integer>> threeSum(int[] nums) { 3 List<List<Integer>> res = new ArrayList<>(); 4 if (nums.length < 3) { 5 return res; 6 } 7 Arrays.sort(nums); 8 // 遍历到倒数第三个就可以了 9 for (int i = 0; i < nums.length - 2; i++) { 10 // i去重复 11 if (i != 0 && nums[i] == nums[i - 1]) 12 continue; 13 int j = i + 1; 14 int k = nums.length - 1; 15 while (j < k) { 16 if (nums[i] + nums[j] + nums[k] == 0) { 17 List<Integer> list = new ArrayList<>(); 18 list.add(nums[i]); 19 list.add(nums[j]); 20 list.add(nums[k]); 21 res.add(list); 22 j++; 23 k--; 24 // 去重复 25 while (j < k && nums[j - 1] == nums[j]) { 26 j++; 27 } 28 while (j < k && nums[k] == nums[k + 1]) { 29 k--; 30 } 31 } else if (nums[i] + nums[j] + nums[k] < 0) { 32 j++; 33 } else { 34 k--; 35 } 36 } 37 } 38 return res; 39 }

 

posted @ 2018-05-27 19:09  bwwbww  阅读(130)  评论(0编辑  收藏  举报