news 2026/9/4 21:44:32

DeepSeek 专家 LeetCode 39. 组合总和 Python3实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DeepSeek 专家 LeetCode 39. 组合总和 Python3实现

以下是 LeetCode 39. 组合总和 的 Python3 实现,采用 回溯法(DFS),通过排序和剪枝优化效率。


思路

  1. 回溯搜索:从 candidates 中不断选取数字,直到当前和等于 target 或超过 target。
  2. 允许重复使用:递归时传递的起始索引 start 不变,表示可以继续选择当前数字。
  3. 避免重复组合:只从 start 开始向后遍历,保证组合内数字是非递减顺序,从而避免产生 [2,3] 和 [3,2] 这类重复。
  4. 剪枝优化:提前对数组排序,当当前数字加上已累积和超过 target 时,直接 break 循环(因为后续数字更大,也不可能满足)。

代码实现

classSolution:defcombinationSum(self,candidates:List[int],target:int)->List[List[int]]:res=[]candidates.sort()# 排序,便于剪枝defbacktrack(start,path,remain):ifremain==0:# 找到一个组合res.append(path[:])# 拷贝当前路径returnforiinrange(start,len(candidates)):num=candidates[i]ifnum>remain:# 剪枝:当前数字已经大于剩余目标值breakpath.append(num)# 选择当前数字backtrack(i,path,remain-num)# 注意 start=i,允许重复使用path.pop()# 回溯,撤销选择backtrack(0,[],target)returnres

复杂度分析

· 时间复杂度:O(S),其中 S 为所有可行解的长度之和。最坏情况下,组合数量可能很大,但剪枝能有效减少搜索。理论上最坏为指数级,但题目数据规模通常较小。
· 空间复杂度:O(target),递归深度最大为 target / min(candidates)(全部选最小数字),额外空间用于递归栈和临时路径。


说明

· 递归函数 backtrack(start, path, remain) 中,remain 表示还需要凑的和。
· 当 remain == 0 时,表示已找到一个合法组合,将其加入结果列表。
· 循环从 start 开始,保证组合有序且不会回头选择更小的数,从而避免重复。
· 排序后使用 if num > remain: break 提前终止循环,减少不必要的递归。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/4 21:44:17

从while循环看软件测试入门:边界思维与Python自动化实践

如果你打算在 2026 年进入软件测试行业,先别急着囤课。很多人买完一堆视频后会发现一个尴尬现象:看别人写 while 循环轻轻松松,自己动手就死循环;背了一堆测试理论,面试官问“这个输入框怎么设计用例”,脑子…

作者头像 李华
网站建设 2026/9/4 21:42:02

边缘调度架构解耦:基于GPIO隔离的机器人梯控系统代码

摘要: 华为的SDN网络架构与西门子的工业控制总线为物联网提供了极高可用性的宏观运行环境。在此优异的底层支持下,边缘控制节点则专注于细分调度。如果底层硬件采用破线方式去截取不同品牌电梯的通信协议,不仅面临庞大的定制成本,…

作者头像 李华
网站建设 2026/9/4 21:41:54

电脑与手机连接方法介绍 电脑手机连接教程

电脑与手机连接方法五花八门,很多方式要么需要繁琐的数据线配对,要么依赖复杂的网络设置,普通用户很难快速上手。电脑与手机连接方法想要简单高效、无需线下对接,远程互联工具就是很好的选择,推荐使用无界趣连2.0&…

作者头像 李华
网站建设 2026/9/4 21:41:46

远程控制mac软件有哪些 windows可以远程控制mac吗

mac软件大多适配专属生态,和windows系统天然存在壁垒,跨系统远程操控往往处处受限。windows用户想要远程控制mac软件,推荐使用无界趣连2.0,不用折腾复杂的系统设置,轻松实现双向远程操控,适配办公、设备运维…

作者头像 李华
网站建设 2026/9/4 21:39:45

从录制回放到流程资产:构建健壮自动化脚本的工程化实践

你有没有遇到过这种情况:一个看似简单的任务,比如批量处理一批文件,或者把一段文字转成另一种格式,你吭哧吭哧手动操作了半天,好不容易搞定,结果第二天、第三天,同样的任务又来了。你不得不重复…

作者头像 李华
网站建设 2026/9/4 21:39:29

中华青铜文明

中华青铜文明 完整代码地址:https://www.aiyuanma.vip/posts/homework-qingtongwenhua 一、项目简介 中华青铜文明(青铜器博物馆)是一个面向文化传播与互动体验的静态 Web 展示项目。网站以中华青铜文明为主线,从夏商周至秦汉的历…

作者头像 李华