题目:给一个数组,找出其中的4个数字之和等于target。和3sum没什么区别吧,加一层循环而已。已AC,虽然时间不短。
class Solution {
public:
vector<vector<int> > fourSum(vector<int> &num, int target) {
// Note: The Solution object is instantiated only once.
vector<vector<int> > res;
int numlen = num.size();
if(num.size()<4)return res;
sort(num.begin(),num.end());
for(int i = 0; i < numlen; i++)
{
for(int j = i+1; j < numlen; j++)
{
int begin = j+1;
int end = numlen-1;
while(begin < end)
{
int sum = num[i]+ num[j] + num[begin] + num[end];
if(sum == target)
{
vector<int> tmp;
tmp.push_back(num[i]);
tmp.push_back(num[j]);
tmp.push_back(num[begin]);
tmp.push_back(num[end]);
vector<vector<int> >::iterator it;
it=find(res.begin(),res.end(),tmp);
if(it==res.end())
res.push_back(tmp);
tmp.clear();
begin++;
end--;
}else if(sum<target)
begin++;
else
end--;
}
}
}
return res;
}
};