Leetcode15
一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。
注意:答案中不可以包含重复的三元组。
示例:
给定数组 nums = [-1, 0, 1, 2, -1, -4],
满足要求的三元组集合为:
[[-1, 0, 1],[-1, -1, 2]]
class Solution {
List<List<Integer>> res=new ArrayList<>();
public List<List<Integer>> threeSum(int[] nums) {
int len=nums.length;
Arrays.sort(nums);
if(len<3) return res;
for(int i=0;i<len;i++){
if(i>0&&nums[i]==nums[i-1]){
continue;
}
helper(nums,i,0-nums[i]);
}
return res;
}
public void helper(int[] nums,int start,int target){
int low=start+1,hight=nums.length-1;
while(low<hight){
if(low>start+1&&nums[low]==nums[low-1]){
low++;
continue;
}
if(nums[low]+nums[hight]==target){
List<Integer> list=new ArrayList<>();
list.add(nums[start]);
list.add(nums[low]);
list.add(nums[hight]);
res.add(list);
low++;
}else if(nums[low]+nums[hight]>target){
hight--;
}else{
low++;
}
}
}
}