zoukankan      html  css  js  c++  java
  • [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];
            }
        }
    };
  • 相关阅读:
    主要用到 DELPHI XE 10.2新增HASH函数
    个人使用Onenote和Evernote对比
    OneNote和Evernote的特征
    allure的HTML报告信息解疑
    记:ModuleNotFoundError: No module named 'pip'
    用例需注意的点
    Selenium Builder
    定位到元素后可进行的操作事件
    基本定位方法
    webdriver的基本操作
  • 原文地址:https://www.cnblogs.com/jianxinzhou/p/4189826.html
Copyright © 2011-2022 走看看