class Solution {
public:
vector<vector<int>> fourSum(vector<int>& nums, int target) {
if(nums.size() < 4){
return {};
}
vector<vector<int>> result;
sort(nums.begin(), nums.end());
int temp, sum2, flag;
for(int k=0; k<nums.size()-3; k++){
if(nums[k] == nums[k-1] && k > 0){
continue;
}
flag = target - nums[k];
for(int i=k+1; i<nums.size()-2; i++){
if(nums[i] == nums[i-1] && i > k+1){
continue;
}
temp = flag - nums[i];
int left = i + 1;
int right = nums.size() - 1;
while(left < right ){
sum2 = nums[left] + nums[right];
if(sum2 == temp)
result.push_back({nums[k],nums[i],nums[left],nums[right]});
sum2 < temp ? left++ : right--;
while(nums[left] == nums[left-1] && left > i+1){
left++;
}
while(nums[right] == nums[right+1] && right < nums.size()-1){
right--;
}
}
}
}
return result;
}
};
同三数和,在外面加了一重循环,注意去重