• leetcode第39题:组合综合


    给定一个无重复元素的数组 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]
    ]

    解题思路:
    先排序,然后递归求解
    代码如下:
    class Solution:
        def Solver(self, res, path, candidates, target, idx):
            for i in range(idx, len(candidates)):
                new_target = target - candidates[i]
                if new_target < 0:
                    return
                else:
                    if new_target == 0:
                        res.append(path + [candidates[i]])
                    else:
                        self.Solver(res, path + [candidates[i]], candidates,
                                    new_target, i)
    
        def combinationSum(self, candidates, target):
            """
            :type candidates: List[int]
            :type target: int
            :rtype: List[List[int]]
            """
            path = []
            res = []
            candidates = sorted(candidates)
            self.Solver(res, path, candidates, target, 0)
            return res
  • 相关阅读:
    格式与布局 float 左右悬浮边框
    格式与布局
    样式表
    c# 验证码
    邮箱登录页面
    表单与框架
    HTML 练习 做简历表
    HTML 基础
    验证码 随机数
    Linux 三剑客 -- awk sed grep
  • 原文地址:https://www.cnblogs.com/tsdblogs/p/10152867.html
Copyright © 2020-2023  润新知