• [LeetCode] Combination Sum


    Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T.

    The same repeated number may be chosen from C unlimited number of times.

    Note:

    • All numbers (including target) will be positive integers.
    • Elements in a combination (a1, a2, … , ak) must be in non-descending order. (ie, a1a2 ≤ … ≤ ak).
    • The solution set must not contain duplicate combinations.

    For example, given candidate set 2,3,6,7 and target 7,
    A solution set is:
    [7]
    [2, 2, 3]

    以下是我 AC 的代码:

    /**
     * author:Zhou Jianxin
     */
    
    class Solution 
    {
    public:
        vector<vector<int> > combinationSum(vector<int> &candidates, int target) 
        {
             sort(candidates.begin(), candidates.end());
             vector<vector<int>> ret;
             vector<int> path;
             combinationSumRec(candidates, target, ret, path, 0);
             return ret;
        }
        
    private:
        void combinationSumRec(const vector<int> &candidates,
                               int target,
                               vector<vector<int>> &ret,
                               vector<int> &path,
                               size_t index)
        {
            if (target == 0)
            {
                ret.push_back(path);
                return;
            }
            
            int prev = -1;
            
            for (size_t ix = index; ix != candidates.size(); ++ix)
            {
                if (candidates[ix] > target)
                {
                    return;
                }
                
                if (candidates[ix] == prev)
                {
                    continue;
                }
                
                path.push_back(candidates[ix]);
                combinationSumRec(candidates, target - candidates[ix], ret, path, ix);
                path.erase(path.end() - 1);
                prev = candidates[ix];
            }
        }
    };
  • 相关阅读:
    Maven Docker镜像使用技巧
    Dockerfile 最佳实践
    无状态服务
    Docker 镜像加速器
    如何设置Docker容器中Java应用的内存限制
    k8s的容器监测探针
    (部署)使用kubernetes的deployment进行RollingUpdate
    linux下brctl配置网桥
    代码高亮插件
    Docker容器
  • 原文地址:https://www.cnblogs.com/jianxinzhou/p/4189826.html
Copyright © 2020-2023  润新知