题目:https://leetcode.com/problems/4sum/description/
代码:
class Solution {
public:
vector<vector<int>> fourSum(vector<int>& nums, int target) {
vector<vector<int> > res;
if(nums.size()==0) return res;
sort(nums.begin(),nums.end());
for(int i = 0;i<nums.size();i++){
int sum1 = target - nums[i];
for(int j = i+1;j<nums.size();j++){
int sum2 = sum1 - nums[j];
int start = j+1,end = nums.size()-1;
while(start < end){
if(nums[start]+nums[end]<sum2){
start++;
}else if(nums[start]+nums[end]>sum2){
end --;
}else{
vector<int> temp = {nums[i],nums[j],nums[start],nums[end]};
res.push_back(temp);
while(start<end&&nums[start]==temp[2]) start++;
while(start<end&&nums[end]==temp[3]) end--;
}
}
while(j+1<nums.size()&&nums[j+1]==nums[j]) j++;
}
while(i+1<nums.size()&&nums[i+1]==nums[i]) i++;
}
return res;
}
};