python-leetcode 47.组合总和

embedded/2025/3/19 6:26:06/

题目:

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

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

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


方法一:递归回溯

class Solution(object):def combinationSum(self, candidates, target):""":type candidates: List[int]:type target: int:rtype: List[List[int]]"""candidates.sort()#排序,减少无效递归ans=[] #存储所有满足条件的组合path=[] #存储当前正在尝试的组合def dfs(i,left): #当前遍历到 candidates 的索引,left目前需要的目标和if left==0: #找到了一组合法的组合ans.append(list(path))  #存储 path 的副本,否则 path 继续变化return if i ==len(candidates) or left<candidates[i]:#索引超出范围,如果 left 已经小于当前候选数,后续的数(更大)也不可能满足 left,直接返回return dfs(i+1,left)#跳过当前元素i,直接递归处理下一个元素path.append(candidates[i])#将当前元素加入 dfs(i,left-candidates[i])path.pop()#移除 path 中最后添加的元素,以尝试其他组合dfs(0,target)return ansreturn ans

源自力扣官方题解
 


http://www.ppmy.cn/embedded/173781.html

相关文章

防火墙双机热备(主备分担)

目录 引言 主备备份实验 1、基本配置 2、双机热备配置 查看双机热备状态 主备切换 路由影响 引言 传统VRRP方式无法实现主、备用防火墙状态信息和多组VRRP状态的一致性&#xff0c;所以可能会导致流量的回包不从首包通过的防火墙回包&#xff0c;防火墙会因为状态检测机…

【Java篇】一法不变,万象归一:方法封装与递归的思想之道

文章目录 Java 方法的使用&#xff1a;从基础到递归的全面解析一、方法的概念及使用1.1 什么是方法 (method)?1.2 方法定义1.3 方法调用的执行过程1.4 实参和形参的关系1.5 没有返回值的方法 二、方法重载2.1 为什么需要方法重载2.2 方法重载的概念2.2.4 C 和 Java 的比较&…

采购与供应链项目建议书(46页PPT)(文末有下载方式)

资料解读&#xff1a;采购与供应链项目建议书&#xff08;46页PPT&#xff09; 详细资料请看本解读文章的最后内容。 引言 在当今竞争激烈的市场环境中&#xff0c;采购与供应链管理已成为企业核心竞争力的重要组成部分。本文将对《采购与供应链项目建议书》进行详细解读&am…

linux 命令 tail

tail 是 Linux 中用于查看文件末尾内容的命令&#xff0c;常用于日志监控和大文件快速浏览。以下是其核心用法及常见选项&#xff1a; 基本语法 tail [选项] 文件名 常用选项 显示末尾行数 -n <行数> 或 --lines<行数> 指定显示文件的最后若干行&#xff08;…

Spring Boot 整合 Redis 使用教程

Redis 是一种高性能的键值存储数据库&#xff0c;常用于缓存、会话管理和消息队列等场景。Spring Boot 通过 Spring Data Redis 提供了简洁的整合方式。 1. 环境准备 1.1 添加依赖 在 pom.xml 中添加 Redis 依赖&#xff08;Spring Boot 3.x&#xff09;&#xff1a; <de…

波士顿咨询X大型制造业数字化转型战略规划项目(98页PPT)(文末有下载方式)

资料解读&#xff1a;波士顿咨询 X 大型制造业数字化转型战略规划项目&#xff08;98 页&#xff09; 详细资料请看本解读文章的最后内容。在当下数字化浪潮席卷全球的时代&#xff0c;制造业作为国家经济发展的重要支柱&#xff0c;其数字化转型进程备受关注。这份由波士顿咨…

使用Ajax技术进行动态网页的爬虫(pycharm)

Ajax&#xff08;Asynchronous JavaScript and XML&#xff09;技术在现代Web开发中广泛应用。 它允许网页在不重新加载整个页面的情况下&#xff0c;通过JavaScript与服务器进行异步通信&#xff0c;动态更新部分内容。这种技术对爬虫的功能和作用产生了显著影响&#xff0c;…

杂谈:前端 UI 框架和 UI 组件库的区别

前端技术的概念比较多&#xff0c;容易搞混。 比如有些新人不理解前端 UI 框架和 UI 组件库的区别&#xff0c;今天我来简单说明一下两者的区别。 两者的区别 新人会搞混这两个概念&#xff0c;主要是因为在有些话语中&#xff0c;它们是同等的地位&#xff0c;比如下面这两…