1.四数之和
其实和三数之和没啥区别 在外面再加一层循环 但是要注意 两个被固定的数都要来判重
class Solution {
public:
vector<vector<int>> fourSum(vector<int>& nums, int target) {
if(nums.size()<4){return {};}
sort(nums.begin(),nums.end());
vector<vector<int>>res;
int len=nums.size();
for(int i=0;i<len-3;i++){
if(i>0 && nums[i]==nums[i-1]){continue;}
for(int j=i+1;j<len-2;j++){
if(j>i+1 && nums[j]==nums[j-1]){continue;}
int left=j+1;
int right=len-1;
while(left<right){
if(nums[i]+nums[j]+nums[left]+nums[right]==target){
vector<int>temp={nums[i],nums[j],nums[left],nums[right]};
res.push_back(temp);
while(left<right && nums[left]==nums[left+1]){left++;}
while(left<right && nums[right]==nums[right-1]){right--;}
left++;
right--;
}
else if(nums[i]+nums[j]+nums[left]+nums[right]>target){
right--;
}
else{left++;}
}
}
}
return res;
}
};