Python描述 LeetCode 39. 组合总和

Posted 亓官劼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python描述 LeetCode 39. 组合总和相关的知识,希望对你有一定的参考价值。

Python描述 LeetCode 39. 组合总和

  大家好,我是亓官劼(qí guān jié ),在【亓官劼】公众号、CSDN、GitHub、B站等平台分享一些技术博文,主要包括前端开发、python后端开发、小程序开发、数据结构与算法、docker、Linux常用运维、NLP等相关技术博文,时光荏苒,未来可期,加油~

  如果喜欢博主的文章可以关注博主的个人公众号【亓官劼】(qí guān jié),里面的文章更全更新更快。如果有需要找博主的话可以在公众号后台留言,我会尽快回复消息.


本文原创为【亓官劼】(qí guān jié ),请大家支持原创,部分平台一直在恶意盗取博主的文章!!! 全部文章请关注微信公众号【亓官劼】。

题目

给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。

candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。

对于给定的输入,保证和为 target 的不同组合数少于 150 个。

示例 1:

输入:candidates = [2,3,6,7], target = 7
输出:[[2,2,3],[7]]
解释:
2 和 3 可以形成一组候选,2 + 2 + 3 = 7 。注意 2 可以使用多次。
7 也是一个候选, 7 = 7 。
仅有这两种组合。

示例 2:

输入: candidates = [2,3,5], target = 8
输出: [[2,2,2,2],[2,3,3],[3,5]]

示例 3:

输入: candidates = [2], target = 1
输出: []

提示:

  • 1 <= candidates.length <= 30
  • 1 <= candidates[i] <= 200
  • candidate 中的每个元素都 互不相同
  • 1 <= target <= 500

Python描述

回溯算法

class Solution:
    def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:
        res = []
        n = len(candidates)
        if target == 0:
            return []
        def dfs(combine,idx):
            if idx == len(candidates):
                return
            # 跳过,不要这个数
            dfs(combine,idx+1)
            # 要这个数
            if sum(combine)+candidates[idx] <= target:
                combine.append(candidates[idx])
                if sum(combine) == target:
                    res.append([_ for _ in combine])
                dfs(combine,idx)
                combine.pop()
        dfs([],0)
        return res
            

以上是关于Python描述 LeetCode 39. 组合总和的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode刷题Python518. 零钱兑换 II

Leetcode刷题Python322. 零钱兑换

回溯leetCode高频:39. 组合总和

Leetcode 39 组合总和(回溯算法解题)

LeetCode 39. 组合总和(Combination Sum)

Python描述 LeetCode 77. 组合