LeetCode39.组合总和 JavaScript

给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。

candidates 中的数字可以无限制重复被选取。

说明:

  • 所有数字(包括 target)都是正整数。
  • 解集不能包含重复的组合。

示例 1:

输入: candidates = [2,3,6,7], target = 7,
所求解集为:
[
  [7],
  [2,2,3]
]

示例 2:

输入: candidates = [2,3,5], target = 8,
所求解集为:
[
  [2,2,2,2],
  [2,3,3],
  [3,5]
]

答案参考:
/**
 * @param {number[]} candidates
 * @param {number} target
 * @return {number[][]}
 */
var combinationSum = function(candidates, target) {
    var item=[],path=[];
    no_repetition(candidates,target,0,item,path);
    function no_repetition(candidates,target,it,item,path){
        if(target<0)
            return;
        if(target==0){
            path=path.slice()
            item.push(path);
            return
        }
        for(var i=it;i<candidates.length;i++){
            path.push(candidates[i]);
            no_repetition(candidates,target-candidates[i],i,item,path)
            path.pop()
        }
    }
    return item
};

原文地址:https://www.cnblogs.com/lhh520/p/10392757.html

时间: 2024-10-30 07:21:52

LeetCode39.组合总和 JavaScript的相关文章

[Swift]LeetCode39. 组合总和 | 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 n

LeetCode40.组合总和|| JavaScript

给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的每个数字在每个组合中只能使用一次. 说明: 所有数字(包括目标数)都是正整数. 解集不能包含重复的组合. 示例 1: 输入: candidates = [10,1,2,7,6,1,5], target = 8, 所求解集为: [ [1, 7], [1, 2, 5], [2, 6], [1, 1, 6] ] 示例 2: 输入: can

动态规划(0-1背包)--- 组合总和

组合总和 377. Combination Sum IV (Medium) nums = [1, 2, 3] target = 4 The possible combination ways are: (1, 1, 1, 1) (1, 1, 2) (1, 2, 1) (1, 3) (2, 1, 1) (2, 2) (3, 1) Note that different sequences are counted as different combinations. Therefore the ou

组合总和3 leetcode 216

组合总和3 解题思路:递归回溯 class Solution { public List<List<Integer>> result = new ArrayList<List<Integer>>(); public List<List<Integer>> combinationSum3(int k, int n) { List<Integer> list = new ArrayList<>(); combina

LeetCode 216. 组合总和 III(Combination Sum III)

题目描述 找出所有相加之和为 n 的 k 个数的组合.组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字. 说明: 所有数字都是正整数. 解集不能包含重复的组合. 示例 1: 输入: k = 3, n = 7 输出: [[1,2,4]] 示例 2: 输入: k = 3, n = 9 输出: [[1,2,6], [1,3,5], [2,3,4]] 解题思路 回溯算法,从第一个数开始依次添加数字并比较当前数字总和,若相等就添加到结果集合中. 代码 1 class Solution

如果 a+b+c=1000,且 a^2+b^2=c^2(a,b,c 为自然数),如何求出所有a、b、c可能的组合?Java/JavaScript/C/Python耗时对比

如果 a+b+c=1000,且 a^2+b^2=c^2(a,b,c 为自然数),如何求出所有a.b.c可能的组合? 不考虑算法优化,一千万次循环计算判断 Java/JavaScript/C/Python 多次测试耗时对比. Java 单次总耗时957毫秒 import java.util.Date; public class algorithm { public static void main(String[] args) { long start = new Date().getTime()

leetCode 39.Combination Sum(组合总和) 解题思路和方法

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 (includi

leetCode 40.Combination Sum II(组合总和II) 解题思路和方法

Combination Sum II Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T. Each number in C may only be used once in the combination. Note: All numbers (including t

216 Combination Sum III 组合总和 III

找出所有可能的 k 个数,使其相加之和为 n,只允许使用数字1-9,并且每一种组合中的数字是唯一的.示例 1:输入: k = 3, n = 7输出:[[1,2,4]]示例 2:输入: k = 3, n = 9输出:[[1,2,6], [1,3,5], [2,3,4]]详见:https://leetcode.com/problems/combination-sum-iii/description/ class Solution { public: vector<vector<int>>