赞
踩
主要要思考以下几个问题:
class Solution { public List<List<Integer>> threeSum(int[] nums) { Arrays.sort(nums); int n = nums.length; List<List<Integer>> res = new ArrayList<>(); for(int i = 0; i < nums.length; i++) { int l = i + 1, r = n - 1; if(i > 0 && nums[i] == nums[i-1]) continue; // 去重 while(l < r) { int sum = nums[i] + nums[l] + nums[r]; if(sum < 0) l++; else if(sum > 0) r--; else { res.add(Arrays.asList(nums[i], nums[l], nums[r])); l++; r--; } } } return res; } }
通过部分测试用例
这里去重要注意两个指针移动过程中也要去重!
更正代码:
class Solution { public List<List<Integer>> threeSum(int[] nums) { Arrays.sort(nums); int n = nums.length; List<List<Integer>> res = new ArrayList<>(); for(int i = 0; i < nums.length; i++) { int l = i + 1, r = n - 1; if(i > 0 && nums[i] == nums[i-1]) continue; // 去重 while(l < r) { int sum = nums[i] + nums[l] + nums[r]; if(sum < 0) l++; else if(sum > 0) r--; else { res.add(Arrays.asList(nums[i], nums[l], nums[r])); while(l < r && nums[l+1] == nums[l]) l++; while(l < r && nums[r] == nums[r-1]) r--; l++; r--; } } } return res; } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。