news 2026/5/4 22:50:44

力扣-组合总和 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/5/3 3:02:01

轻量级容器环境Colima

Colima是一个在macOS&#xff08;和Linux&#xff09;上运行容器的最小化设置工具&#xff0c;它通过在虚拟机中运行容器&#xff0c;为开发者提供了一个轻量级的本地容器环境。 诞生背景&#xff1a;为什么需要Colima&#xff1f; Colima源于Lima项目&#xff0c;该项目由一群…

作者头像 李华
网站建设 2026/5/4 7:01:12

征程 6 | power management sample

1. 功能概述 本文通过示例演示如何通过相关接口对启动标志进行读写&#xff0c;以及对 main 域电源进行控制与查询。相关 API 定义&#xff0c;请查询 电源管理用户手册 API 部分 。 2. main 域上下电及状态查询示例代码 请参考版本中 Service/Cmd_Utility/power_sample_cmd…

作者头像 李华
网站建设 2026/5/1 6:17:54

网安公司,亏麻了!

又到一年一度的“网安比惨季”。每年这个时候&#xff0c;上市公司一发业绩预告&#xff0c;朋友圈就像开了弹幕&#xff1a;“亏得真稳定”、“一年更比一年凉”、“这行业还有救吗&#xff1f;”我把2025年的成绩单摊开一看&#xff0c;好家伙——这哪是财报&#xff0c;分明…

作者头像 李华
网站建设 2026/5/1 10:07:39

晋升名单其实早就在答辩前定好了?答辩只是走个过场

刚看到个贴子&#xff0c;楼主说自己为了晋升&#xff0c;熬夜做了20页PPT&#xff0c;把一年成绩吹到天上去。结果评委只问了一句&#xff1a;你在项目里的不可替代性是什么&#xff1f;更扎心的是&#xff0c;后来才知道晋升名单早就定好了&#xff0c;答辩纯属走流程。我的看…

作者头像 李华
网站建设 2026/5/1 13:33:21

iPhone17大热,网传有国产手机品牌的旗舰手机最高跌超三成

由于苹果的iPhone17卖得实在太好&#xff0c;一些国产手机品牌总是喜欢对标iPhone17&#xff0c;眼见着在整体销量方面落后太多&#xff0c;于是他们不断缩短时间周期&#xff0c;例如从季度缩短到月份&#xff0c;甚至会时不时拿周销量来证明自己并未必iPhone17差太多&#xf…

作者头像 李华
网站建设 2026/5/1 13:31:19

CANN hixl 在单机多卡场景下的 PCIe 带宽优化策略

相关链接&#xff1a; CANN 组织主页&#xff1a;https://atomgit.com/cannhixl 仓库地址&#xff1a;https://atomgit.com/cann/hixl 前言 在单机多设备&#xff08;Multi-Device&#xff09;AI 训练与推理系统中&#xff0c;设备间的数据交换常通过 PCIe 总线完成。然而&am…

作者头像 李华