0
点赞
收藏
分享

微信扫一扫

Leetcode四数之和终于解决

给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] :

  • 0 <= a, b, c, d < n
  • a、b、c 和 d 互不相同
  • nums[a] + nums[b] + nums[c] + nums[d] == target
  • 你可以按 任意顺序 返回答案 。

Leetcode四数之和终于解决_leetcode

class Solution {
public:
vector<vector<int>> fourSum(vector<int>& nums, int target) {
sort(nums.begin(),nums.end());
vector<vector<int>> res;
int64_t a=0,b=0,c=0,d=0;
uint64_t lastd=10*10*10*10*10*10*10*10*10+1;
uint64_t lastc=10*10*10*10*10*10*10*10*10+1;
uint64_t lastb=10*10*10*10*10*10*10*10*10+1;
uint64_t lasta=10*10*10*10*10*10*10*10*10+1;
for(int i=0;i<nums.size();i++)
{
if(lasta==nums[i])
{
lasta=10*10*10*10*10*10*10*10*10+1;
continue;
}
lasta=nums[i];
a=nums[i];
for(int j=i+1;j<nums.size();j++)
{
if(lastb==nums[j])
{

continue;
}
lastb=nums[j];
b=nums[j];
for(int k=j+1;k<nums.size();k++)
{
if(lastc==nums[k])
{

continue;
}
lastc=nums[k];
c=nums[k];
for(int l=k+1;l<nums.size();l++)
{
if(lastd==nums[l])
{

continue;
}
lastd=nums[l];
d=nums[l];

if((a+b+c+d) == target)
{
vector<int>temp;
temp.push_back(a);
temp.push_back(b);
temp.push_back(c);
temp.push_back(d);
cout<<"a="<<a<<" b="<<b<<" c="<<c<<" d="<<d<<endl;
res.push_back(temp);

}
}
lastd=10*10*10*10*10*10*10*10*10+1;
}
lastc=10*10*10*10*10*10*10*10*10+1;
}
lastb=10*10*10*10*10*10*10*10*10+1;
}

sort(res.begin(),res.end());
res.erase(unique(res.begin(),res.end()),res.end());
return res;

}

};

Leetcode四数之和终于解决_i++_02



举报

相关推荐

0 条评论