LeetCode 216. 组合总和 III(排列组合 回溯)
发布日期:2021-07-01 03:15:45
浏览次数:2
分类:技术文章
本文共 1029 字,大约阅读时间需要 3 分钟。
1. 题目
找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。
说明:所有数字都是正整数。解集不能包含重复的组合。 示例 1:输入: k = 3, n = 7输出: [[1,2,4]]示例 2:输入: k = 3, n = 9输出: [[1,2,6], [1,3,5], [2,3,4]]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/combination-sum-iii 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
相关题目
2. 回溯解题
- 关键在于如何避免重复
- 每次取了一个数 i ,那么下次取得数只能比 i 大,这样避免重复组合
class Solution { public: vector> combinationSum3(int k, int n) { vector > ans; vector cb; bt(0,0,k,0,n,cb,ans); return ans; } void bt(int num, int count, int k, int sum, int n, vector &cb, vector > &ans) { if(sum > n || 9-num < k-count)//和超了,或者剩余的数不够个数 return; if(count == k) { if(sum == n) ans.push_back(cb); return; } for(int j = num+1; j <= 9; ++j)//每次取num+1,避免重复 { cb.push_back(j); bt(j,count+1,k,sum+j,n,cb,ans); cb.pop_back(); } }};
0 ms 6.8 MB
我的CSDN
长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
转载地址:https://michael.blog.csdn.net/article/details/101369537 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年04月23日 20时36分04秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
36岁退休!阿里 P8 六年实现“财务自由”,裸辞环游世界!
2019-05-02
QQ号终于能修改了?
2019-05-02
1.3 万亿条数据查询,如何做到毫秒级响应?
2019-05-02
高赞回答:为什么高级程序员不必担心自己的技术过时?
2019-05-02
支持 Dubbo 接口文档生成的工具
2019-05-02
SpringBoot集成WebSocket,实现后台向前端推送信息
2019-05-02
基于SpringBoot实现单点登录系统
2019-05-02
优秀程序员早就学会用“状态模式”代替if-else了
2019-05-02
Windows 10将预装Windows Terminal
2019-05-02
非常强悍的 RabbitMQ 总结,写得真好!
2019-05-02
字符编码,原来是SQL不走索引的元凶之一!
2019-05-02
老板要我开发一个简单的工作流引擎 !
2019-05-02
Spring JPA整合QueryDSL
2019-05-02
Java编程思想笔记——第五章 初始化和清理
2019-05-02
关于java.text.SimpleDateFormat的parse()方法存在的坑
2019-05-02
Java编程思想笔记——第十章 内部类
2019-05-02
Java编程思想笔记——第十四章 类型信息
2019-05-02
为什么商业搜索引擎选择的索引更新策略是完全重建策略
2019-05-02
MySQL学习笔记——慢查询
2019-05-02
elastic-job监控平台搭建
2019-05-02