力扣-回溯-39 组合总和

思路

和之前几道组合的题目差不多,不同的是允许元素重复,所以要求单层递归里的for循环从当前的index开始即可

代码

class Solution {
public:
    int curSum;
    vector path;
    vector< vector > result;

    void backtracking(vector& candidates, int curIndex, int target){
        if(curSum > target) return;
        if(curSum == target){
            result.push_back(path);
            return;
        }

        for(int i = curIndex; i < candidates.size(); i++){
            path.push_back(candidates[i]);
            curSum += candidates[i];
            backtracking(candidates, i, target);
            path.pop_back();
            curSum -= candidates[i];
        }

        return;
    }

    vector> combinationSum(vector& candidates, int target) {
        backtracking(candidates, 0, target);
        return result;
    }
};

你可能感兴趣的:(力扣,#,回溯,leetcode,算法,数据结构)