4-sum 已通过测试
定义一对指针,指向两头。再定义一对指针,指向中间的两个元素。加起来看看跟target比较一下。再决定内部指针怎么移动。
class Solution {
public:
vector<vector<int> > fourSum(vector<int> &num, int target) {
vector<int>v;
vector<vector<int>>v1;
int len=num.size();
if(len<=3)return v1;
sort(num.begin(),num.end());
for(int i=0;i<len-3;i++)
{
for(int k=len-1;k>i+2;k--)
{
int ab=num[i]+num[k];
int c=target-ab;
int m=i+1,n=k-1;
for(;m<n;)
{
int sum=num[m]+num[n];
if(sum==c)
{
v.clear();
v.push_back(num[i]);
v.push_back(num[m]);
v.push_back(num[n]);
v.push_back(num[k]);
if(count(v1.begin(),v1.end(),v)==0)
v1.push_back(v);
m++;n--;
}
else if(sum<c)
{
m++;
}
else n--;
}
}
}
return v1;
}
};