题解 | #加起来和为目标值的组合#

加起来和为目标值的组合

http://www.nowcoder.com/practice/75e6cd5b85ab41c6a7c43359a74e869a

class Solution {
public:
    void dfs(vector<vector<int >>& res, vector<int>& ans, vector<int>& num, vector<bool>& used, int target, int selSum, int startIndex) {
        if(selSum == target) {
            res.push_back(ans);
            return;
        }
        for(int i = startIndex; i < num.size(); i++) { // i从startIndex开始遍历,保证数组从小到大按照顺序遍历
            if(!used[i] && selSum + num[i] <= target) {
                if(i > 0 && num[i]==num[i-1] && used[i-1]==false) // 剪枝掉相同数组
                   continue;
                used[i] = true;
                ans.push_back(num[i]);
                dfs(res, ans, num, used, target, selSum + num[i], i + 1);
                used[i] = false;
                ans.pop_back();
            }
        }
    }
    vector<vector<int> > combinationSum2(vector<int> &num, int target) {
        sort(num.begin(), num.end());
        vector<vector<int>> res;
        vector<int> ans;
        vector<bool> used(num.size(), false);
        int selSum = 0;
        int startIndex = 0;
        dfs(res, ans, num, used, target, selSum, startIndex);
        return res;
    }
};
全部评论

相关推荐

赛博小保安:你这简历没啥大问题的,经历技能也足够了,问题应该就是出在出身了,学院本就是这样,HR忙着跟92的勾搭呢,哪有心思看我们这些双非😿😭
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务