pair头文件 #include <utility>
pair将一对值(T1和T2)组合成一个值,
这一对值可以具有不同的数据类型(T1和T2),
两个值可以分别用pair的两个公有函数first和second访问。
class Solution {
public:
vector<vector<int>> fourSum(vector<int>& nums, int target) {
vector<vector<int>>result;
unordered_map<int,vector<pair<int,int>>>cache;
sort(nums.begin(),nums.end());
for(int a=0;a<nums.size();a++)
{
for(int b=a+1;b<nums.size();b++)
{
cache[nums[a]+nums[b]].push_back(pair<int,int>(a,b));
}
}
for(int c=0;c<nums.size();c++)
{
for(int d=c+1;d<nums.size();d++)
{
int sum=target-nums[c]-nums[d];
if(cache.find(sum)==cache.end())continue;
auto vec=cache[sum];
for(int k=0;k<vec.size();k++)
{
if(c<=vec[k].second)continue;
result.push_back({nums[vec[k].first],nums[vec[k].second],nums[c],nums[d]});
}
}
}
sort(result.begin(),result.end());
result.erase(unique(result.begin(),result.end()),result.end());
return result;
}
};