LeetCode Combination Sum II

来源:互联网 发布:知阅小说网vip账号 编辑:程序博客网 时间:2024/05/16 08:48

这个能不能不递归呢?

void recursiveSum2(vector<int> &candidates,int target,vector<int> &res,vector<vector<int> > &ret,int n){if (n==candidates.size()){return ;}if (candidates[n]==target){res.push_back(candidates[n]);ret.push_back(res);res.pop_back();}else{if (candidates[n]<target){res.push_back(candidates[n]);for(int i=n+1;i<candidates.size()&&candidates[i]<target;i++){recursiveSum2(candidates,target-candidates[n],res,ret,i);}res.pop_back();}elsereturn ;}}vector<vector<int> > combinationSum2(vector<int> &num, int target) {sort(num.begin(),num.end());vector<int> res;vector<vector<int> >ret;for (int i=0;i<num.size()&&num[i]<=target;i++){recursiveSum2(num,target,res,ret,i);}sort(ret.begin(),ret.end());ret.erase(unique(ret.begin(),ret.end()),ret.end());return ret;}

为什么后面要排序和去重复,思考给的例子,1 1 2 5 6 7 10 ,target=8,第一个1 和后面的2,5是一组,第二个1和后面的2,5 又是一组。

0 0
原创粉丝点击