python实现leetcode之39. 组合总和

解题思路

递归
对于每一个数作递归操作
如果这个数item小于目标值target,包括这个数在内的数组合出target-item,在每个组合前面附加上item就是所有方案
如果这个数等于target,这就是方案,包含一个数
否则无解

39. 组合总和

代码

class Solution:
    def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:
        rtv = []
        for idx, item in enumerate(candidates):
            if item < target:
                others = candidates[idx:]
                more = self.combinationSum(others, target-item)
                for x in more:
                    rtv.append([item, *x])
            elif item == target:
                rtv.append([item])
        return rtv
效果图
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目:给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中...
    minningl阅读 1,319评论 0 0
  • 题目描述(中等难度) 给几个数字,一个目标值,输出所有和等于目标值的组合。 解法一 回溯法 参考这里 ,就是先向前...
    windliang阅读 1,430评论 0 0
  • 题目:给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数...
    minningl阅读 1,098评论 0 0
  • 更多精彩内容,请关注【力扣中等题】。 题目 难度:★★★☆☆类型:数组方法:回溯法 给定一个无重复元素的数组 ca...
    玖月晴阅读 5,351评论 0 0
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 11,277评论 0 4