您的位置:首页 > 其它

leetcode 4Sum

2015-02-04 11:33 295 查看
这道题和前面一道3Sum是一样的就是多一层循环

题目:https://oj.leetcode.com/problems/4sum/

注意改3Sum的代码时,要注意size,还有双重循环的时候记得注意(l != i+1)这个地方

class Solution {
public:
vector<vector<int> > fourSum(vector<int> &num, int target) {
sort(num.begin(),num.end());
vector<vector<int> > result;
if(num.size()<4)
return result;
for(int i = 0;i < num.size()-1;i++){
if(i!=0 && num[i] ==num[i-1]) continue;
for(int l = i+1;l < num.size()-1;l++){
if(l!=i+1 && num[l] ==num[l-1]) continue;
int j = l + 1, k = num.size()-1;
int sum;
while(j < k){
sum = num[i] + num[j] + num[k] + num[l];
if(sum== target) {
vector<int> one;
one.push_back(num[i]);
one.push_back(num[l]);
one.push_back(num[j]);
one.push_back(num[k]);
result.push_back(one);
while(++j<k&&num[j]==num[j-1]){}
while(j<--k&&num[k]==num[k+1]){}
}
else if(sum <target) j++;
else k--;
}
}
}
return result;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: