第二十五天| 216.组合总和III、17.电话号码的字母组合
Leetcode 216.组合总和III
题目链接:216 组合总和III
题干:找出所有相加之和为
n的k个数的组合,且满足下列条件:
- 只使用数字1到9
- 每个数字 最多使用一次
返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。
2 <= k <= 91 <= n <= 60
思考:回溯法。先设计全局变量结果集result,路径集path。再考虑回溯函数:
| 参数 | 含义 |
|---|---|
| k | 满足条件的组合内数的个数 |
| targetSum | 满足条件的组合内数相加之和 |
| sum | 当前路径内数相加之和 |
| startIndex | 下一层循环搜索的起始位置 |
终止条件:在路径path 满足条件长度k后,判断当前sum是否满足targetSum,若满足则添加到容器result内。
单层搜索逻辑:从startIndex开始循环添加到路径path中,再递归处理,最后再回溯。
剪枝优化处理:
- 若for循环选择的起始位置之后的元素个数已经不足需要的元素个数则后序数就没有必要搜索
- for循环中若加入当前数sum值超过目标值targetSum则后序数就没有必要搜索
代码:
class Solution {
public:vector<vector<int>> result;vector<int> path;void backtracking(int k, int targetSum, int sum, int startIndex) {if (path.size() == k) {if (sum == targetSum)result.push_back(path);return;}for (int i = startIndex; i <= 9 - (k - path.size()) + 1; i++) {//剪枝操作,若当前数加入路径后相加之和大于目标值则结束循环if (sum + i > targetSum) break;else {sum += i;path.push_back(i);backtracking(k, targetSum, sum, i + 1);//回溯sum -= i;path.pop_back();}}}vector<vector<int>> combinationSum3(int k, int n) {result.clear();path.clear();backtracking(k, n, 0, 1);return result;}
};
Leetcode 17.电话号码的字母组合
题干链接:17 电话号码的字母组合
题干:给定一个仅包含数字
2-9的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
0 <= digits.length <= 4digits[i]是范围['2', '9']的一个数字。
思考:回溯法。先定义静态数字与字母的映射表,全局变量结果集result,路径集path。再考虑回溯函数:
| 参数 | 含义 |
| digits | 题干给定字符串 |
| index | 字符串中某个字符的下标 |
终止条件:若当前遍历到字符串最后一个字符则将路径path加入结果集result。
单层搜索逻辑:先取出当前处理数字对应的字母集,再循环处理该字母集中的字符,添加到路径,递归处理,回溯移除路径。
代码:
class Solution {
public:const string letterMap[10] { //数字与字母的映射表"", "", //0、1"abc", "def", //2、3"ghi", "jkl", //4、5"mno", "pqrs", //6、7"tuv", "wxyz" //8、9};vector<string> result;string path;void backtracking(string& digits, int index) {if (index == digits.size()) {result.push_back(path);return;}string s = letterMap[digits[index] - '0']; //取当前处理数字对应的字母集for (int i = 0; i < s.size(); i++) {path += s[i];backtracking(digits, index + 1);path.pop_back(); //回溯}}vector<string> letterCombinations(string digits) {result.clear();if (digits.size() == 0) return result;path = "";backtracking(digits, 0);return result;}
};
自我总结:
- 熟悉回溯三部曲,for循环横向遍历,递归纵向遍历,回溯不断调整结果集。
相关文章:
第二十五天| 216.组合总和III、17.电话号码的字母组合
Leetcode 216.组合总和III 题目链接:216 组合总和III 题干:找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次&#…...
HTML+CSS:全景轮播
效果演示 实现了一个简单的网页布局,其中包含了五个不同的盒子,每个盒子都有一个不同的背景图片,并且它们之间有一些间距。当鼠标悬停在某个盒子上时,它的背景图片会变暗,并且文字会变成白色。这些盒子和按钮都被放在一…...
【WPF.NET开发】优化性能:布局和设计
本文内容 WPF 应用程序的设计可能会在计算布局和验证对象引用时产生不必要的开销,从而影响性能。 对象的构造会影响应用程序的性能特征,在运行时更是如此。本主题提供这些方面的性能改进建议。 Layout “布局过程”一词描述了测量和排列 Panel&#x…...
go语言-context的基本使用
1. 什么是 Context? Go 1.7 标准库引入 context,中文译作“上下文”,准确说它是 goroutine 的上下文,包含 goroutine 的运行状态、环境、现场等信息。 context 主要用来在 goroutine 之间传递上下文信息,包括&#x…...
《计算机网络简易速速上手小册》第9章:物联网(IoT)与网络技术(2024 最新版)
文章目录 9.1 IoT 架构与通信协议 - 打造智能世界的秘诀9.1.1 基础知识9.1.2 重点案例:使用 Python 和 MQTT 实现智能家居照明系统准备工作Python 脚本示例发布者(灯光控制)订阅者(灯光状态接收): 9.1.3 拓…...
开源博客项目Blog .NET Core源码学习(8:EasyCaching使用浅析)
开源博客项目Blog使用EasyCaching模块实现缓存功能,主要是在App.Framwork项目中引用了多类包,包括内存缓存(EasyCaching.InMemory)、Redis缓存(EasyCaching.CSRedis),同时支持多种序列化方式&am…...
windows下docker的使用
目录 1:docker是什么,能干什么? 2:docker下初始化一个容器 1:工具支持 2:运行装载docker镜像 a:在docker toolbox底下有个start.sh,我们进去里面修改里面路径配置: …...
C语言——R/预处理详解
一、预定义符号 C语⾔设置了⼀些预定义符号,可以直接使⽤,预定义符号也是在预处理期间处理的。 __FILE__ //进⾏编译的源⽂件 __LINE__ //⽂件当前的⾏号 __DATE__ //⽂件被编译的⽇期 __TIME__ //⽂件被编译的时间 __STDC__ //如果编译器遵循ANSI C&a…...
Unity_PackageManager缺失
Unity_PackageManager缺失 Unity早期版本不带PakageManager,或是人为因素造成PakageManager缺失。 关闭Unity工程,在项目文件下Packages文件夹里打开manifest.json,修改添加一行: "com.unity.package-manager-ui": &q…...
Megatron-LM源码系列(七):Distributed-Optimizer分布式优化器实现Part2
1. 使用入口 DistributedOptimizer类定义在megatron/optimizer/distrib_optimizer.py文件中。创建的入口是在megatron/optimizer/__init__.py文件中的get_megatron_optimizer函数中。根据传入的args.use_distributed_optimizer参数来判断是用DistributedOptimizer还是Float16O…...
[SWPUCTF 2021 新生赛]ez_unserialize
根据下面的user_agent和Disallow可以判断这个是在robots.txt 我们看的出来这是一个反序列化需要我们adminadmin passwdctf construct 构造方法,当一个对象被创建时调用此方法,不过unserialize()时却不会被调用 destruct 析构方法,PHP将在对象…...
android tv开发-1,leanback 2
目录 presenter太多,如何理清关系 动画与点击 tv的登录与设置 搜索功能 带二级菜单的页面 presenter太多,如何理清关系 leanback里面已经定义好了adapter与presenter,直接继承它就可以了 private DefaultObjectAdapter mVideoAdapter; private VideoCardPresenter mCardP…...
Spring Boot注解
Spring Boot提供了许多常用的注解,用于简化开发过程和配置管理。以下是一些常用的Spring Boot注解: SpringBootApplication: 标记一个类为Spring Boot应用程序的入口点,同时也是一个组合注解,包括了Configuration、EnableAutoConf…...
JavaWeb中的Filter(过滤器)和 Listener(监听器)
提示:这两个东西听起来似乎很难,实际上是非常简单的,按照要求写就行了,一定不要被新名词给吓到了。 JavaWeb中的Filter(过滤器) 一、Filter(过滤器)1.如何编写 Filter2.Filter 中的细…...
mybatis查询修改mysql的json字段
前言: mysql5.7版本之后支持json字段类型,推荐mysql8版本,适用于属性不确定的个性化字段,比如: 身份信息{“职业”,“学生”,“兴趣”:“打乒乓球”,“特长”:“跳高,书法”}; 图片信息{“日期”:“2023-12-12 22:12”…...
实时聊天系统
这个系统可以用于网站的即时通讯,比如客服系统、在线社区等。这个功能不仅对用户友好,而且也是检验技术实现能力的一个很好的案例。 ### 功能概述 该系统允许用户在网站上实时发送和接收消息。为了保持实时性,我们将使用PHP进行服务器端的逻…...
Spring-mvc、Spring-boot中如何在调用同类方法时触发AOP
1. 问题描述 Spring-mvc和Spring-boot中aop可以实现代理的功能,我们可以借此实现事务和日志记录或者限流等多种操作。但是,如果你在一个方法中调用其同类下的其他方法的时候不会触发AOP。本文主要说明其原因及解决办法和实现原理。 2. 原因 AIOP的本质是…...
幻兽帕鲁服务器自动重启备份-python
幻兽帕鲁服务器自动重启备份-python 1. 前置知识点2. 目录结构3. 代码内容4. 原理解释5. 额外备注 基于python编写的服务器全自动管理工具,能够实现自动定时备份存档,以及在检测到服务器崩溃之后自动重新启动,并且整合了对于frp端口转发工具的…...
C# Onnx yolov8 水表读数检测
目录 效果 模型信息 项目 代码 训练数据 下载 C# Onnx yolov8 水表读数检测 效果 模型信息 Model Properties ------------------------- date:2024-01-31T10:18:10.141465 author:Ultralytics task:detect license:AGPL-…...
负载均衡下webshell连接
目录 一、什么是负载均衡 分类 负载均衡算法 分类介绍 分类 均衡技术 主要应用 安装docker-compose 2.1上传的文件丢失 2.2 命令执行时的漂移 2.3 大工具投放失败 2.4 内网穿透工具失效 3.一些解决方案 总结 一、什么是负载均衡 负载均衡(Load Balanc…...
GPT-6,曝光了,当 AGI 只剩最后一公里,我们为何仍把 GPU 当燃料?
“土豆”熟了,代号 GPT-6。过去两周,OpenAI 的保密墙像被筛子砸过,4 月 14 日这个日期在内部聊天频道被反复 全员。知情人士说,那天的发布按钮其实已经提前写好,只等 Brockman 一声令下。为什么如此急迫?因…...
YOLOv12在Unity引擎中的集成:打造实时AR目标检测应用
YOLOv12在Unity引擎中的集成:打造实时AR目标检测应用 最近在琢磨一个挺有意思的事儿,怎么把最新的目标检测模型塞到手机里,然后通过摄像头,让虚拟世界的东西“粘”在真实世界的物体上。比如,你手机对着桌子上的一个杯…...
扩展你的 RAG:基于 Rust 的 LanceDB 和 Candle 索引管道
原文:towardsdatascience.com/scale-up-your-rag-a-rust-powered-indexing-pipeline-with-lancedb-and-candle-cc681c6162e8?sourcecollection_archive---------2-----------------------#2024-07-11 构建大规模文档处理的高性能嵌入和索引系统 https://medium.co…...
OpenClaw节能模式:让SecGPT-14B在笔记本上流畅运行的配置
OpenClaw节能模式:让SecGPT-14B在笔记本上流畅运行的配置 1. 为什么需要节能模式? 去年冬天,我的MacBook Pro在运行SecGPT-14B时发烫到可以当暖手宝的程度,续航时间从8小时骤降到不足90分钟。这促使我开始研究OpenClaw的节能配置…...
OpenClaw故障诊断:Qwen3.5-9B接口超时问题排查实录
OpenClaw故障诊断:Qwen3.5-9B接口超时问题排查实录 1. 问题现象与初步判断 那天深夜,我正在调试一个自动化文档处理流程,OpenClaw突然开始频繁报错。控制台不断弹出"Model timeout after 30000ms"的警告,原本10秒内能…...
从特斯拉到5G基站:Clarity 3D Solver在汽车电子设计中的7个隐藏技巧
从特斯拉到5G基站:Clarity 3D Solver在汽车电子设计中的7个隐藏技巧 当112Gbps高速互连成为5G基站标配,当自动驾驶汽车的雷达系统需要处理毫米波频段的复杂干扰,电磁兼容性(EMC)工程师们正面临前所未有的挑战。传统仿真…...
昆明电力管供应商哪家强
在昆明城市电网升级、新能源基础设施建设的浪潮中,电力管作为保护电力线路的关键材料,其质量直接影响工程安全性与使用寿命。面对市场上琳琅满目的供应商,如何选择兼具适配性、可靠性与性价比的合作伙伴?本文从行业痛点切入&#…...
DeepSeek-OCR-2功能体验:双列可视化界面,左传图右看结果,操作直观
DeepSeek-OCR-2功能体验:双列可视化界面,左传图右看结果,操作直观 1. 为什么这个OCR工具值得一试 如果你经常需要处理扫描文档、PDF文件或者图片中的文字,传统OCR工具可能让你又爱又恨。它们确实能提取文字,但遇到复…...
从面包板到开发板:51单片机(STC89C52)点灯避坑指南与硬件连接实战
从面包板到开发板:51单片机(STC89C52)点灯避坑指南与硬件连接实战 当你第一次拿到STC89C52单片机芯片和一堆零散的元器件时,那种既兴奋又迷茫的感觉我至今记忆犹新。与直接使用现成的开发板不同,从零开始搭建最小系统并点亮第一个LED…...
Sen2Cor批处理实战:从L1C到L2A,如何确保你的大气校正结果不受处理基线影响?
Sen2Cor批处理实战:处理基线对L2A大气校正结果的影响解析 第一次用Sen2Cor处理完200景Sentinel-2数据后,我发现同一地区的NDVI值在不同时期竟然出现了断崖式下跌——不是植被变化,而是处理基线在作祟。这个教训让我意识到,批量大气…...
