public static List<List<Integer>> threeSum2(int[] nums) {
List<List<Integer>> result = new LinkedList<>();
if (nums == null||nums.length<3) {
return result;
}
Arrays.sort(nums);
for (int i = 0;i<nums.length;i++) {
//因为数组是排序过的,刚开始就大于0 ,后面肯定也大于0,就不会存在等于0的情况了
if (nums[i]>0) {
break;
}
//去重
if (i>0&&nums[i] == nums[i-1]) {
continue;
}
int l = i+1;
int r = nums.length-1;
int res = -nums[i];
while (l<r) {
if (nums[l]+nums[r]>res) {
r--;
}else if (nums[l]+nums[r]<res) {
l++;
}else {
List<Integer> list = new LinkedList<>();
list.add(nums[i]);
list.add(nums[l]);
list.add(nums[r]);
result.add(list);
while (l<r && nums[l] == nums[l+1]){
l++; // 去重
}
while (l<r && nums[r] == nums[r-1]){
r--; // 去重
}
r--;
l++;
}
}
}
return result;
}
力扣-三数之和
最新推荐文章于 2022-08-05 14:33:02 发布