发布时间:2026/7/28 2:04:10
力扣39-组合总和 39. 组合总和 - 力扣LeetCode给你一个无重复元素的整数数组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 302 candidates[i] 40candidates的所有元素互不相同1 target 40假设 candidates 长度为 n那么可以视为一棵 n 叉树对这棵树进行 dfs 即可。每走到一个节点看当前的路径总和与 target 的大小关系如果大于 target 就回溯如果等于就直接将当前路径的节点值加入答案如果小于就继续往下找。因此也不难看出如果能事先将 candidates 进行排序就可以避免很多不必要的遍历因为如果当前路径加上一个较小的数已经比 target 大了那么比这个数大的数就没必要再考虑加入到路径中了但需要注意的是[2, 2, 3]和[3, 2, 2]是相同的组合也就是说不能单纯地视为 n 叉树需要剪掉一些分支。以示例一为例对于 2 来说它可以选 2 3 6 7那对于 3 来说就没有必要选 2 了因为[2, 3]和[3, 2]是相同的组合所以 3 可选的数只需要是 3 6 7 中的一个。同理对于 6 来说它只需要能选 6 和 7 即可也就是说我们需要设置一个变量 start 表示当前candidates[start]及其之后的数都是可选的。然后这个变量作为递归的一个参数传入即可class Solution: def combinationSum(self, candidates: List[int], target: int) - List[List[int]]: candidates.sort() ans [] def backtrack(start: int, path: List[int], remain: int) - None: # remain 表示离 target 还差多少 if remain 0: ans.append(path[:]) return if remain 0: return for i in range(start, len(candidates)): if candidates[i] remain: # 如果加上当前元素超过 target, 那么这条路径必然不行 break path.append(candidates[i]) backtrack(i, path, remain - candidates[i]) path.pop() backtrack(0, [], target) return ans

相关新闻

2026/7/28 2:04:10

JeecgBoot数据字典颜色配置失效分析与修复

1. 项目背景与需求解析JeecgBoot作为国内流行的低代码开发平台,其数据字典功能一直是核心模块之一。数据字典颜色配置功能在实际业务场景中尤为重要,它能够直观地区分不同状态的数据(如启用/禁用、通过/驳回等)。但在最近的版本迭…

2026/7/28 2:04:10

基于Dify与DeepSeek快速构建本地化智能知识库实战指南

这次我们来看一个能让你快速搭建个人或企业知识库的方案:用 Dify 整合 DeepSeek。如果你正在寻找一个开箱即用、支持本地部署、并且能通过 API 轻松接入大模型的知识库系统,这个组合值得你花十分钟了解一下。Dify 是一个开源的 LLM 应用开发平台&#xf…

2026/7/28 3:19:16

AI如何优化学术写作:从文献梳理到创新点提炼

1. 项目概述:AI如何重塑学术写作范式去年指导一位博士生修改论文时,发现他花费了整整三个月时间在文献梳理和框架搭建上。这促使我开始系统性探索AI工具在学术写作中的应用可能。当前主流学术写作辅助工具可分为三类:文献管理类(如…

2026/7/28 3:19:16

AI文本检测与智能改写技术解析

1. 项目背景与核心价值去年我在学术期刊担任外审专家时,发现一个有趣现象:超过60%的投稿论文都存在明显的机器生成痕迹。这些文本往往结构工整却缺乏逻辑纵深,用词华丽但论证薄弱。正是这样的行业痛点,催生了"千笔"这类…

2026/7/28 3:19:16

基于掌控板的垃圾分类训练机:交互式学习硬件设计与实现

1. 项目缘起:从“你是什么垃圾”到智能识别“你是什么垃圾?”这句曾经风靡一时的灵魂拷问,背后是垃圾分类从倡导到强制执行的现实转变。对于很多家庭,尤其是刚开始接触分类的成员来说,干垃圾、湿垃圾、可回收物、有害垃…

2026/7/28 3:19:16

基于行空板与MPX5010DP传感器的肺活量测量仪制作全解析

1. 项目缘起:从“吹气球”到“测肺活量”的硬件启蒙记得我刚开始接触创客教育时,给学生们讲传感器,最头疼的就是如何把抽象的“模拟量输入”、“电压值”这些概念讲得生动有趣。直到有一次,一个学生问我:“老师&#x…

2026/7/27 9:04:58

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

2026/7/28 0:03:34

学术论文研究创新点梳理与核心价值提炼指南

本科毕业论文是大学四年最大的坎。开题报告憋一周写不出三页,找文献翻遍十几个网站还是缺关键资料,写正文卡壳半天憋不出一句话,降重改到凌晨三点结果逻辑全乱,答辩前一天PPT还没做完。别慌,亲测这四个工具能让你少熬半…

2026/7/28 0:03:34

开发商售楼处数字化升级怎么做?

房企的数字化转型投入正在快速增长,据行业数据显示,2025年房企数字化投入规模已突破800亿元,年复合增长率达35%。售楼处的数字化升级不是单一环节的改造,而是从“获客-展示-成交-服务”全链路的系统升级。数字化升级四步法第一步&…

2026/7/28 0:03:34

模型不再值钱之后,AI 编程工具在争什么

2026 年 7 月,AI 编程工具赛道发生了一个标志性转折:模型本身不再值钱了。当 Kimi K3 开源模型在编程基准上击败 GPT 和 Claude,当 GitHub Copilot 第一次把开源模型纳入选择器,当 OpenAI 把 Codex 并入 ChatGPT 做成三合一超级应…

2026/7/27 3:13:33

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…