public class {
public List<List<Integer>> threeSum(int[] nums){
Arrays.sort(nums);
List<List<Integer>> res = new LinkedList<>();
for(int i=0; i < nums.length - 2; i++){
if(i == 0 ||(i>0 && nums[i] != nums[i-1])){
int begin = i+1,end = nums.length-1,sum = 0 - nums[i];
while(begin < end){
if(nums[begin]+nums[end] == sum){
res.add(Arrays.asList(nums[i],nums[begin],nums[end]));
while(begin < end && nums[begin] == nums[begin+1])
begin++;
while(begin < end && nums[end] == nums[end-1])
end--;
begin++;
end--;
}else if(nums[begin] + nums[end] < sum){
begin++;
}else{
end--;
}
}
}
}
return res;
}
}
近期评论