news 2026/4/23 9:47:10

力扣-组合总和 III

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
力扣-组合总和 III

思路分析

  1. 路径:当前已选的数字列表(比如 [1,2]);
  2. 选择列表:当前可选择的数字(为了去重,只选比上一个数字大的数,比如选了 1 之后只选 2-9,避免重复组合);
  3. 终止条件:
    • 路径长度 == k:若路径和 == n,加入结果集;否则直接返回;
    • 路径和 > n:提前剪枝(无需继续选数);
    • 剩余可选数字不足:比如已选 2 个数,还需选 3 个,但只剩 2 个数字可选,直接剪枝。
  4. 回溯逻辑:遍历选择列表,选一个数加入路径 → 递归 → 撤销选择(回溯)。

代码实现

// 保存最终结果List<List<Integer>>res=newArrayList<>();// 保存当前路径List<Integer>curPath=newArrayList<>();publicList<List<Integer>>combinationSum3(intk,intn){// 如果k大于n,直接返回空列表if(k>n){returnres;}// 回溯backtrack(1,0,k,n);returnres;}publicvoidbacktrack(intstart,intcurSum,intk,inttargetSum){// 如果当前和等于目标值,且长度为k,加入结果if(curSum==targetSum&&curPath.size()==k){res.add(newArrayList<>(curPath));return;}// 剪枝1:如果当前和大于目标值,直接返回if(curSum>targetSum){return;}// 剪枝2:如果当前路径长度加上可选的最大数还小于k,直接返回intremainCount=k-curPath.size();intremainNum=9-start+1;if(remainCount>remainNum){return;}// 开始遍历for(inti=start;i<=9;i++){// 选择curPath.add(i);curSum+=i;backtrack(i+1,curSum,k,targetSum);// 回溯curSum-=i;curPath.remove(curPath.size()-1);}}

代码关键部分解释

  1. 去重核心:start 参数控制每次选择的起始数字(比如选了 1 之后,下一轮只能选 2-9),避免出现 [1,2] 和 [2,1] 这样的重复组合。
  2. 剪枝优化(关键,提升效率):
  • 剪枝 1:当前路径和 > n,直接返回(比如选了 1+3=4,n=5 但还需选 1 个数,若下一个数选 2,和为 6>5,无需遍历);
  • 剪枝 2:剩余可选数字数量 < 还需选的数,直接返回(比如需要选 3 个数,当前从 8 开始选,只剩 8、9 两个数,不足 3 个,无需遍历)。
  1. 回溯状态恢复:递归后必须撤销选择(sum -= i + path.remove()),否则路径和状态会混乱。
  2. 结果集存储:new ArrayList<>(path) 是因为 path 是引用类型,直接添加会导致后续修改覆盖结果,需新建列表。

复杂度分析

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

机器视觉工程师职位深度解析:基于无锡先导智能装备股份有限公司的需求

无锡先导智能装备股份有限公司 机器视觉工程师 职位信息 岗位职责: 1、厂内、外相关设备视觉交付,能够胜任视觉软、硬件调试 2、能够根据客户需求进行基本的图像算法、数据统计等功能开发 3、持续优化改善视觉软件、算法能力,提升运行效率,降低故障率 岗位要求: 1、有1年以…

作者头像 李华
网站建设 2026/4/18 9:59:15

8款AI降AIGC工具,赶due应急超实用!

哈喽&#xff0c;大家好&#xff01;我是小李&#xff08;自称老李也行&#xff0c;毕竟32岁了&#xfffd;&#xfffd;&#xff09;。今天咱们来聊聊一个火爆话题——论文被AI检测卡住了&#xff1f;别慌&#xff01;我亲身体验了8款AI工具&#xff0c;帮你赶due救急&#xf…

作者头像 李华
网站建设 2026/4/18 6:29:33

都说日本车没有未来时,突然咸鱼翻生,国产电车却在暴跌

日本汽车在中国市场连续多年衰退之后&#xff0c;诸多媒体都说日本车在中国市场已没有未来&#xff0c;它们在中国市场将持续衰退&#xff0c;再加上此前铃木、三菱等日本汽车企业都已退出中国市场&#xff0c;似乎日本汽车在中国市场蒙上了阴霾。相比起诸多国产汽车企业在2月初…

作者头像 李华
网站建设 2026/4/23 1:25:42

280城×50年×17类用地|SSPs未来土地数据分享

最近在处理城市扩张数据时&#xff0c;我发现一个有趣的现象&#xff1a;中国75个典型城市近50年来面积扩展了7.46倍&#xff0c;这种快速城市化进程对气候系统的影响远超预期。特别是在当前"双碳"目标背景下&#xff0c;如何平衡城市发展、耕地保护和碳汇能力&#…

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

吃透 C++ Stack 与 Queue:接口介绍 + 基础操作 + 实战习题

&#x1f525;小叶-duck&#xff1a;个人主页 ❄️个人专栏&#xff1a;《Data-Structure-Learning》 《C入门到进阶&自我学习过程记录》 ✨未择之路&#xff0c;不须回头 已择之路&#xff0c;纵是荆棘遍野&#xff0c;亦作花海遨游 目录 一、搞懂基础&#xff1a;Sta…

作者头像 李华
网站建设 2026/4/18 15:23:31

并发三剑客:CountDownLatch、Semaphore 与 CyclicBarrier 的奇妙旅行

背景设定&#xff1a; 想象你正在组织一场大型旅游活动。这场旅行涉及多个环节——游客集合、上车出发、景点游览、集体拍照、返程下车……每个环节都需要多人协作、同步进行。而 Java 并发包里的这三个工具类&#xff0c;就像三位各司其职的“旅行协调员”&#xff0c;分别负责…

作者头像 李华