和上一题差不多

 

class Solution {
public:
    void search(vector<vector<int> >& ans , vector<int>& tmp ,vector<int> &candidates , int target , int sum , int start) {
        if(sum > target) return;
        if(sum == target) {
            ans.push_back(tmp);
            return ;
        }
        int prev = -1; 
        for(int i = start ; i < candidates.size() ; i++) {
            if(prev == candidates[i]) continue;
            prev = candidates[i];
            tmp.push_back(candidates[i]);
            search(ans,tmp,candidates,target,sum+candidates[i] , i+1);
            tmp.pop_back();
        }
    }
    vector<vector<int> > combinationSum2(vector<int> &candidates, int target) {
        vector<vector<int> > ans;
        vector<int> tmp;
        sort(candidates.begin() , candidates.end());
        search(ans,tmp,candidates,target, 0 , 0);
        return ans;
    }
};

 

相关文章:

  • 2021-12-13
  • 2022-01-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-02-12
  • 2021-08-10
  • 2021-07-18
  • 2022-02-04
  • 2021-08-10
  • 2021-07-25
相关资源
相似解决方案