LeetCode 040 Combination Sum II

来源:互联网 发布:ios8.4.1完美越狱mac 编辑:程序博客网 时间:2024/06/06 07:22

求一个未排序的序列,其中几个数的和为target,数字不能重复。

使用的方法和039差不多,具体差别在代码中展示。

class Solution {  public:            void get_ans(int ans,vector<int>& nums,vector<vector<int>>&an,vector<int> get_ss,int limit){          if(ans==0){an.push_back(get_ss);return ;}         int get_aa=-1;        for(int ii=0;ii<nums.size();ii++){              if(ans-nums[ii]<0||ii<=limit)continue;//由于只能使用一次,所以改成<=            if(nums[ii]==get_aa)continue;            get_ss.push_back(nums[ii]);              get_ans(ans-nums[ii],nums,an,get_ss,ii);            get_aa=*(get_ss.end()-1);//需要判断是不是在同一个位置上出现相同的数字,导致结果重复,比如[1,1],target=2,结果只能是[1],而不是[1],[1]            get_ss.erase(get_ss.end()-1);          }      }      vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {          sort(candidates.begin(),candidates.end());          vector<vector<int>>yy;          vector<int>uu;          get_ans(target,candidates,yy,uu,-1);          return yy;      }  };  


0 0
原创粉丝点击