陣列中找幾個和為sum 且 不重複
阿新 • • 發佈:2019-01-04
class Solution { public: vector<vector<int> > combinationSum2(vector<int> &num, int target) { vector<int> ivec; vector<vector<int> > res; if(num.size()==0||target<=0){ return res; } sort(num.begin(),num.end()); dfs(num,0,target,ivec,res); res.clear(); set<vector<int> >::iterator iter; for(iter=z.begin();iter!=z.end();iter++){ res.push_back(*iter); } return res; } set<vector<int> > z; //利用了set去重 void dfs(vector<int> &nums,int k,int target,vector<int> ivec,vector<vector<int> > &res){ if(target==0){ res.push_back(ivec); z.insert(ivec); return ; }else if(target<0){ return ; } for(int i=k;i<nums.size();++i){ ivec.push_back(nums[i]); dfs(nums,i+1,target-nums[i],ivec,res); ivec.pop_back(); } } };