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

加起来和为目标值的组合

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

class Solution {
public:
    vector<vector<int> > combinationSum2(vector<int> &num, int target) {
        vector<vector<int> > res;
        vector<int> tmp;
        //初始化
        if (num.empty()) return res;
        //特殊情况处理
        sort(num.begin(), num.end());
        //排序
        dfs(num, target, res, tmp, 0);
        //计算
        return res;
    }

    void dfs(vector<int> &num, int target, vector<vector<int> > &res, vector<int> &tmp, int start) {
        if (target == 0) {
            res.push_back(tmp);//结束条件,找到一条路径后保存
            return;
        }
        if (start >= num.size()) return;//越界返回
        
        for (int i = start; i < num.size(); ++i) {
            if (i > start && num[i] == num[i-1]) continue;  // 去重
            if (num[i] <= target) {                         // 剪枝
                tmp.push_back(num[i]);
                dfs(num, target - num[i], res, tmp, i + 1);  //递归
                tmp.pop_back();
            }
        }
    }
};
全部评论

相关推荐

码农索隆:7*24,随时待命,这是去🇷🇺打仗去了啊
点赞 评论 收藏
分享
05-27 14:57
西北大学 golang
强大的社畜在走神:27届真不用急,可以搞点项目、竞赛再沉淀沉淀,我大二的时候还在天天打游戏呢
投递华为等公司10个岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-08 12:10
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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