题目:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。
class Solution {
public List<List<Integer>> threeSum(int[] nums) {
List<List<Integer>> list = new ArrayList<>();
if(nums== null || nums.length <3) return list;
Arrays.sort(nums);
for(int i=0;i<nums.length;i++){
if(nums[i]>0) break;
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){
ArrayList<Integer> list1 = new ArrayList<>();
list1.add(nums[i]);
list1.add(nums[L]);
list1.add(nums[R]);
list.add(list1);
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 if(sum>0){
R--;
}
}
}
return list;
}
}