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

【代码随想录day 21】 力扣 216.组合总和III

视频讲解:https://www.bilibili.com/video/BV1wg411873x/?vd_source=a935eaede74a204ec74fd041b917810c
文档讲解:https://programmercarl.com/0216.%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8CIII.html#%E7%AE%97%E6%B3%95%E5%85%AC%E5%BC%80%E8%AF%BE
力扣题目:https://leetcode.cn/problems/combination-sum-iii/

在这里插入图片描述
这道题的主要思路如上所示,如同上一篇文章说的一样,任何回溯算法题都可以抽象为二叉树,需要注意的点如下:

  1. 回溯完之后,需要更新sum并且弹出i。
  2. 因为这里取的是组合,所以不用往前遍历,直接再i+1~9范围中取值即可。
  3. 当sum已经大于targetsum后,说明不可能再等于了,直接剪枝。
  4. 当剩余数字的数量不足以填满path了,比如k=3,即path里最多3个数,现在path已经存入一个数7,那只有789这一种组合,如果已经存入8,只有89一种组合,永远填不满,直接剪枝,即for循环中,i<9-(k-path.size())+1。
class Solution {
private:vector<int> path;vector<vector<int>> result;void backtracking(int targetSum, int k, int sum, int startIndex){//剪枝if(sum > targetSum){return;}//判断终止条件if(path.size() == k){//如果sum=targetsum就存进去if(targetSum == sum){result.push_back(path);}}//回溯for(int i = startIndex; i <= 9-(k-path.size())+1;i++){//计算sumsum = sum + i;//i压入pathpath.push_back(i);//回溯backtracking(targetSum, k, sum, i+1);//回溯完毕,sum还原sum = sum -i;//回溯完毕,弹出path去找下一个path.pop_back();}}
public:vector<vector<int>> combinationSum3(int k, int n) {result.clear();path.clear();backtracking(n, k, 0, 1);return result;}
};
http://www.dtcms.com/a/360648.html

相关文章:

  • 【代码随想录day 22】 力扣 39. 组合总和
  • 2025年跨领域职业发展证书选择指南
  • 设计模式:外观模式(Facade Pattern)
  • [线上问题排查]深度剖析:一条MySQL慢查询的全面优化实战
  • 操作文件 File类
  • Linux网络编程04:网络基础(万字图文解析)
  • Day19_【机器学习—线性回归 (2)】
  • 【大模型记忆-Mem0详解-1】概述
  • springboot整合minio实现上传下载搭建minio
  • 【CVPR24-工业异常检测】InCTRL:少样本基于上下文残差学习的通才异常检测
  • 安装pthread man手册
  • 决策思维研究体系主要构成
  • B 站 “成分” 检测工具,深挖历史记录,秒测二次元浓度
  • OWASP Top 10漏洞详解
  • MCP(Model Context Protocol,模型上下文协议)介绍
  • 图像质量评价——结构相似度
  • CVPR上的多模态检索+视频理解,LLM助力提效翻倍
  • 基于Basilisk库实现三种姿态的切换
  • 雪花算法是什么,时钟回拨问题怎么解决?
  • 大厂文章学习《DDD在大众点评交易系统演进中的应用》
  • 【数据分享】安徽省四份土地利用矢量shp数据
  • C++ 数据结构之哈希表及其相关容器
  • LeetCode 3459.最长 V 形对角线段的长度:记忆化搜索——就一步步试
  • 【开题答辩全过程】以 家庭理财管理系统的设计与实现为例,包含答辩的问题和答案
  • mit6.031 2023spring 软件构造 笔记 Testing
  • 自定义创建Linux内核Tracepoint
  • git的子模块讲解
  • mmaction安装的详细说明帖
  • 【ArcGIS微课1000例】0150:如何根据地名获取经纬度坐标
  • 基于springboot的摄影器材租赁回收系统