【leetcode100】组合总和

1、题目描述

给你一个 无重复元素 的整数数组 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、初始思路

2.1 思路

本道题中,抽象为树状图为:

2.2 代码

复制代码
class Solution:
    def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:
        res = []
        path = []
        def backtracking(candidates, target, sumCurrent, startIndex):
            if sumCurrent > target:
                return
            if sumCurrent == target:
                res.append(path.copy())
                return
            for i in range(startIndex,len(candidates)):
                path.append(candidates[i])
                sumCurrent += candidates[i]
                backtracking(candidates, target, sumCurrent, i)
                sumCurrent -= candidates[i]
                path.pop()
        backtracking(candidates, target, 0, 0)
        return res
相关推荐
我的ID配享太庙呀1 小时前
Django 科普介绍:从入门到了解其核心魅力
数据库·后端·python·mysql·django·sqlite
小蒋的技术栈记录1 小时前
网易大模型算法岗面经80道
算法
Ress Matthew2 小时前
重塑优化建模与算法设计:2025年大模型(LLM)在优化领域的应用盘点 - 2
算法
找不到、了2 小时前
Java排序算法之<插入排序>
java·算法·排序算法
@蓝莓果粒茶2 小时前
LeetCode第350题_两个数组的交集II
c++·python·学习·算法·leetcode·职场和发展·c#
设计师小聂!2 小时前
力扣热题100----------53最大子数组和
java·数据结构·算法·leetcode
FinAnalyzer2 小时前
如何在 InsCodeAI 上搭建并使用 Jupyter Notebook 环境?
ide·python·jupyter
java1234_小锋2 小时前
【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 微博文章数据可视化分析-文章分类下拉框实现
python·自然语言处理·flask
檀越剑指大厂2 小时前
【Python系列】Flask 应用中的主动垃圾回收
开发语言·python·flask
檀越剑指大厂2 小时前
【Python系列】使用 memory_profiler 诊断 Flask 应用内存问题
开发语言·python·flask