15. 3Sum
class Solution {
public List<List<Integer>> threeSum(int[] nums) {
List<List<Integer>> result=new ArrayList<>();
Arrays.sort(nums);
for(int i=0;i<nums.length;i++){
if(i>0&&nums[i]==nums[i-1]){
continue;
}
int sum=nums[i],start=i+1,end=nums.length-1;
while(start<end){
if(nums[start]+nums[end]==-sum){
List<Integer> temp=new ArrayList<>();
temp.add(sum);
temp.add(nums[start]);
temp.add(nums[end]);
result.add(temp);
while (start<end&&nums[start+1]==nums[start]){
start++;
}
start++;
while (start<end&&nums[end]==nums[end-1]){
end--;
}
end--;
}else if(nums[start]+nums[end]>-sum){
end--;
}else {
start++;
}
}
}
return result;
}
}