class Solution {
public:
vector<vector<int>> fourSum(vector<int>& nums, int target) {
if(nums.size()<4) return {};
sort(nums.begin(),nums.end());
set<vector<int>> a;//去重
vector<vector<int>> res;
for(int i=0;i<nums.size()-3;i++){
if (nums[i]>target && target>0) break;
if ( i>0 && nums[i]==nums[i-1] ) continue;
for(int j=i+1;j<nums.size()-2;j++){
if(j>i+1&&nums[j]==nums[j-1]) continue;
int left=j+1;
int right=nums.size()-1;
while(right>left){
int s= nums[i]+nums[j]+nums[left]+nums[right];
if (s==target) {
vector<int > tmp{nums[i],nums[j],nums[left],nums[right] };
a.insert(tmp);
left++;
right--;
}
else if(s<target) left++;
else if(s>target) right--;
}
}
}
for(auto c:a){ res.push_back(c);}
return res;
}
};