问题描述:
解题思路:
排序加双指针。
题解:
class Solution {
public List<List<Integer>> threeSum(int[] nums) {
int n = nums.length;
Arrays.sort(nums);
List<List<Integer>> res = new ArrayList<List<Integer>>();
for(int i = 0;i<n;i++){
if(i>0&&nums[i] == nums[i-1]){
continue;
}
int k = n-1;
int target = -nums[i];
for(int j = i+1;j<n;j++){
if(j>i+1&&nums[j] == nums[j-1]){
continue;
}
while(j<k&&nums[j]+nums[k]>target){
k--;
}
if(j == k){
break;
}
if(nums[j]+nums[k] == target){
List<Integer> list = new ArrayList<Integer>();
list.add(nums[i]);
list.add(nums[j]);
list.add(nums[k]);
res.add(list);
}
}
}
return res;
}
}