zoukankan      html  css  js  c++  java
  • #Leetcode# 39. Combination Sum

    https://leetcode.com/problems/combination-sum/

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

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

    Note:

    • All numbers (including target) will be positive integers.
    • The solution set must not contain duplicate combinations.

    Example 1:

    Input: candidates = [2,3,6,7], target = 7,
    A solution set is:
    [
      [7],
      [2,2,3]
    ]
    

    Example 2:

    Input: candidates = [2,3,5], target = 8,
    A solution set is:
    [
      [2,2,2,2],
      [2,3,3],
      [3,5]
    ]

    代码:

    class Solution {
    public:
        vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
            int n = candidates.size();
            vector<int> out;
            vector<vector<int> > ans;
            dfs(candidates, target, 0, ans, out);
            return ans;
        }
        void dfs(vector<int> &candidates, int target, int st, vector<vector<int>> &ans, vector<int> &out) {
            if(target < 0) return ;
            else if(target == 0) {ans.push_back(out); return ;}
            for(int i = st; i < candidates.size(); i ++) {
                    out.push_back(candidates[i]);
                    dfs(candidates, target - candidates[i], i, ans, out);
                    out.pop_back();
            }
        }
    };
    

      

  • 相关阅读:
    crontab与系统时间不一致
    MySQL构造测试数据
    【SQL优化】SQL优化工具
    mysql case when then 使用
    update没带where,寻找问题的思路
    线程池
    线程理论
    数据共享
    进程池
    管道
  • 原文地址:https://www.cnblogs.com/zlrrrr/p/10061322.html
Copyright © 2011-2022 走看看