• LeetCode39 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. (Medium)

    Note:

    • All numbers (including target) will be positive integers.
    • 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]
    ]
    

     分析:

    先排个序,用DFS搜索,每个数可选可不选,然后在start > end或者candidates[start] > target后就return。

    恰好candidates[start] = target满足时添加到结果中。

    代码:

     1 class Solution {
     2 private:
     3     vector<vector<int>>result;
     4     void dfs(int start, int end, const vector<int>& candidates, int target, vector<int>& internal) {
     5         if (start > end) {
     6             return;
     7         }
     8         if (candidates[start] == target) {
     9             internal.push_back(candidates[start]);
    10             result.push_back(internal);
    11             internal.pop_back();
    12             return;   
    13         }
    14         if (candidates[start] > target) {
    15             return;
    16         }
    17         dfs(start + 1, end, candidates, target, internal);
    18         internal.push_back(candidates[start]);
    19         dfs(start, end, candidates, target - candidates[start], internal);
    20         internal.pop_back();
    21     }
    22 public:
    23     vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
    24         sort(candidates.begin(), candidates.end());
    25         int end = candidates.size() - 1;
    26         vector<int> internal;
    27         dfs(0, end, candidates, target, internal);
    28         return result;
    29     }
    30 };
  • 相关阅读:
    【分治】动态点分治 ([ZJOI2007]捉迷藏)
    【图论】Tarjan 割点(割顶)
    selenium (五) ActionChains
    selenium (四) WebDriverWait 与 expected_conditions
    selenium (三) 下拉框选项操作
    selenium (二) 浏览器的基本操作
    selenium (一) webdriver 元素定位方法
    selenium 常见问题
    locust 实战:完成用户登录并下单的流程
    MyEclipse 工具过期后,重新激活方法
  • 原文地址:https://www.cnblogs.com/wangxiaobao/p/5811750.html
Copyright © 2020-2023  润新知