当前位置: 首页 > news >正文

leetcode做题笔记216. 组合总和 III

找出所有相加之和为 n 的 k 个数的组合,且满足下列条件:

  • 只使用数字1到9
  • 每个数字 最多使用一次 

返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。

示例 1:

输入: k = 3, n = 7
输出: [[1,2,4]]
解释:
1 + 2 + 4 = 7
没有其他符合的组合了。

示例 2:

输入: k = 3, n = 9
输出: [[1,2,6], [1,3,5], [2,3,4]]
解释:
1 + 2 + 6 = 9
1 + 3 + 5 = 9
2 + 3 + 4 = 9
没有其他符合的组合了。

示例 3:

输入: k = 4, n = 1
输出: []
解释: 不存在有效的组合。
在[1,9]范围内使用4个不同的数字,我们可以得到的最小和是1+2+3+4 = 10,因为10 > 1,没有有效的组合。

思路一:回溯

c++解法

class Solution {
public:vector<int> samp;vector<vector<int>> ans;void dfs(int k,int n,int cur){if (samp.size()==k)if(n==0) {ans.push_back(samp);return;}else return;if (cur>9||cur>n) return;samp.push_back(cur);dfs(k,n-cur,cur+1);samp.pop_back();dfs(k,n,cur+1);}vector<vector<int>> combinationSum3(int k, int n) {dfs(k,n,1);return ans;}
};

分析:

本题要求出组合总和等于目标数的所有组合,利用回溯当组合总和大于目标数则结束遍历,不断回溯找出所有组合

总结:

本题考察对回溯的运用,不断枚举得到所有组合

http://www.lryc.cn/news/223322.html

相关文章:

  • Redis系列-Redis数据类型【3】
  • 机器学习 - 决策树:技术全解与案例实战
  • Opus 1.4 编译脚本
  • 二进制搭建及高可用 Kubernetes v1.20
  • SpringBoot 使用WebSocket打造在线聊天室
  • vcpkg安装第三方库,报错fatal error RC1107: invalid usage; use RC /? for Help
  • axios的介绍及配置多个服务器url
  • C# OpenCvSharp 通过特征点匹配图片
  • 10个python爬虫入门实例
  • 麒麟KYLINOS命令行设置系统静音
  • 零信任安全:构建无懈可击的网络防护体系
  • 华为李鹏:到 2025 年智能算力需求将达到目前水平的 100 倍
  • 【漏洞复现】深信服下一代防火墙NGAF存在任意文件上传漏洞 附POC
  • 城市内涝积水预防,万宾科技内涝监测仪如何预警?
  • SpringBoot定时任务打成jar 引入到新的项目中后并自动执行
  • AD9371 官方例程 NO-OS 主函数 headless 梳理(一)
  • SHAP 和 LIME 解释模型
  • 若依vue-初步下载使用
  • Android 使用.9图 NinePatchDrawable实现动态聊天气泡
  • 力扣 LCR 024. 反转链表两种解法
  • 掌握Capture One 23 Pro,打造专业级图片编辑体验!
  • MFC-TCP网络编程服务端-Socket
  • ChatGPT辅助下的小组学习
  • Linux相关命令
  • 详解卷积神经网络结构
  • java读取pdf数据
  • arcmap / arcgis 安装教程
  • CMake中的变量: 改变构建行为的变量
  • 台式电脑怎么无损备份迁移系统到新硬盘(使用傲梅,免费的就可以)
  • 【紫光同创国产FPGA教程】【PGC1/2KG第七章】7.数字钟实验例程