代码随想录之回溯第一课

news2025/1/15 19:41:27

要领:类型题目,用具体的一个例子来记忆,就够了,印象更加深刻。

一个题目,感觉理解不深刻,不透彻,不清晰,不熟练,就是不达标。

怎么做?

每天回顾复习看一次,写一次 并且 永远相信下一次看这个题目,写这个题目。自己的理解深度,是人生当中最深刻的一次!!!!

结果:把这个具体的题目吃到最透,那么这一类题目,你都就能拿下了。

组合问题:

剪枝操作举例: 比如n=4,k=3;那么 ,目前选取元素为个数为0的时候,i<=n-(k-path.size())+1;

i<= 4 - (3 - 0) +1=2; 至多从2开始后面也可以。后面就不行了。比如234.可以。

 组合总和三 

 

这里,再次深刻的理解,剪枝操作;

树层上的剪枝:9  -(k - path.size())+1; 比如是k = 4,那么计算 i <= 9-(4-0)+1, i <= 6,至多从六开始,比如6789。就是最后面的一个位置了,再往后就不行了。

树枝上的剪枝:进入for循环处理的时候,放入一个元素,如果大小已经超过了targetSum,就没有必要再去进行加到第k个元素了,先回溯,再直接退出这一层,返回上一层。执行for循环下一个元素。

 电话号码的字母组合

解题思想:我们需要把啥?把电话号码 和 对应的字符 能够保存起来。怎么处理呢?我们选择使用string类型的数组来存放。const string letterMap[10]{ };让字符串 和 数组下标对应;然后我们用,string s,来保存一次的执行结果,vector<string> result;来保存结果集。然后计就是递归函数。首先,终止条件:digits字符串里面是"23".然后index表示的是,当前我们操作的数digits字符串里面的第几个字符,也体现的是这个二叉树的深度。(也就是我们目前收集的元素的个数)当收集的元素的个数 == digits大小的时候,说明已经够了,可以把它插入结果集 result,并且返回了。

如何拿到digits字符串里面的第一个字符元素,并且把它转化成,int类型,然后从而找到,letterMap里面对应的字符串。 拿到这个字符串,才是目的,因为我们要遍历的集合就是这个啊。我们采用技术。index刚开始给0.然后 采用 int digit = digits[index] - '0'; 将他转换成整形。然后呢?采用string letters = lettersMap[digit];就拿到了digits字符串首元素字符对应的字符串。

然后就是for循环,这个很熟悉了。

结果注意:要单独写if(digits.size() == 0) return result;

我们为什么不需要要startIndex? 因为这个都是两个集合,不需要考虑元素重复。比如只有一个集合的话就需要考虑:就是这一层操作这个元素,下一次操作元素就要从下一个位置的元素开始,要不然一个元素用两次,出现错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/145402.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DD-1/50 12.5-50mA【接地继电器】

系列型号&#xff1a; DD-1/40接地继电器 DD-1/50接地继电器 DD-1/60接地继电器 一、 用途及工作原理 DD-1型接地继电器为瞬时动作的过电流继电器&#xff0c;用作小电流接地电力系统高电压三相交流发电机和电动机的接地零序过电流保护。继电器线圈接零序电流互感器(电缆式、…

电脑重装系统后分辨率不对应该怎么调

越来越多的小伙伴使用小白一键重装系统给自己的电脑安装上了win10系统&#xff0c;但是有部分小伙伴发现安装完win10系统之后&#xff0c;屏幕分辨率也无法进行调整&#xff0c;呈灰色状态。接下来小编就给大家详细的介绍一下小白一键重装系统分辨率不对怎么调的教程。 工具/原…

【Django】(一)基础知识

文章目录一.安装二.创建项目三.项目介绍四.APP的创建五.小案例六 模板和静态文件模板静态文件7.模板语法7.1 变量7.2列表7.3 字典7.4 过滤器7.5 if/else7.6 for标签7.7 ifequal和ifnotequal7.8注释7.9csrf_token8.模板继承8.1父模板8.2 子模板9.请求和响应10.数据库10.1安装第三…

【服务器搭建个人网站】附:接入的服务商 以及 安全评估报告该如何填写?

前言 哈喽&#xff0c;大家好&#xff0c;我是木易巷&#xff01; 关于公安备案的一些详细的细节没有分享出来&#xff0c;在公安备案期间要填写很多东西&#xff0c;其中比较难填写的就是接入的服务商和安全评估报告的填写。 这一篇给大家总结&#xff1a;公安备案接入服务商和…

⭐️【linux】关于linux-gcc,你必须要知道的知识

&#x1f332;&#x1f332;目录&#x1f332;&#x1f332; 1️⃣什么是gcc 2️⃣gcc如何生成可执行文件 3️⃣简单使用gcc 4️⃣linux的库 1️⃣什么是gcc ❄️GCC&#xff08;GNU Compiler Collection&#xff0c;GNU编译器套件&#xff09;&#xff0c;是由 GNU 开发的…

Java 中 Map 集合的基本使用

一、HashMap 1.1 HashMap 基本使用 import java.util.*;/*** author: yunhu* date: 2022/7/14*/ public class Test {public static void main(String[] args) {Map<String, Integer> map new HashMap<>();map.put("Alice", 12);map.put("Bob&qu…

62.Python 类的3要素语法

62.类的3要素语法 文章目录62.类的3要素语法1. 定义类的语法2. pass语句的作用3.我们学的5个缩进语法4.类的属性5.类的方法6. 创建对象7.类在爬虫中的应用8. 总结1. 定义类的语法 定义类的语法如下&#xff1a; class 类名: 代码块 从语法上来看&#xff1a;类的…

Edify Script (Android Shell)定制Twrp刷机包

本文将通过三方面向大家介绍Edify Script,相信你看完了这篇文章会对安卓系统可刷写插件有一个比较完整的认识,并且能过通过阅读此文章实现使用twrp刷入自己写的插件zipi包。网上能搜到的大部分是旧的,新版本去掉了很多的edify函数,照着他们那个写多半会报错。 本文分为如下…

LeetCode学习-第三十八天

第三十八天 我使用的C&#xff0c;错误的地方请见谅&#xff0c;文章初衷仅用来督促本人学习&#xff0c;如果恰巧能够给你带来帮助&#xff0c;我会十分开心。 文章目录第三十八天一、537. 复数乘法二、29. 两数相除一、537. 复数乘法 复数 可以用字符串表示&#xff0c;遵循…

CentOS7如何修改IP地址及UUID

CentOS7系统下&#xff0c;如果要把IP地址修改为192.168.1.80&#xff0c;子网掩码是255.255.255.0&#xff0c;网关是192.168.1.1&#xff0c;DNS是192.168.1.1&#xff0c;那么我们使用客户端连接CentOS或者打开系统终端&#xff0c;切换到root用户&#xff0c;命令&#xff…

开料的目的和子流程,一文读懂

经过多个月的分享&#xff0c;关于PCB行业&#xff0c;想必朋友们已经有了一些个人的理解&#xff0c;甚至对PCB行业&#xff0c;还产生了浓厚的兴趣。 但是&#xff0c;PCB生产工艺是非常复杂的&#xff0c;想要深入地学习并且学好PCB生产工艺&#xff0c;假如不在PCB的生产一…

如何从PyTorch中获取过程特征图

一、获取Tensor 神经网络在运算过程中实际上是以Tensor为格式进行计算的&#xff0c;我们只需稍稍改动一下forward函数即可从运算过程中抓到Tensor 代码如下&#xff1a; base_feature self.extractor.forward(x) #正常的前向传递 featurebase_feature.detach() …

JavaScript 数据类型

文章目录JavaScript 数据类型JavaScript 拥有动态类型JavaScript 字符串JavaScript 数字JavaScript 布尔JavaScript 数组JavaScript 对象Undefined 和 Null声明变量类型JavaScript 数据类型 字符串&#xff08;String&#xff09;、数字(Number)、布尔(Boolean)、数组(Array)、…

基于java eclipse+jsp+mysql+servlet+Spring的学生信息管理系统基础版

基于java eclipsejspmysqlservletSpring的学生信息管理系统基础版 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言…

【Python百日进阶-数据分析】Day148 - plotly直方图:px.histogram()

文章目录四、实例4.1 带有 Plotly Express 的直方图4.1.1 基本直方图4.1.2 使用一个包含分类数据的列4.1.3 选择方箱的数量4.1.4 日期数据直方图4.1.5 分类数据的直方图4.1.6 访问计数&#xff08;y 轴&#xff09;值4.1.7 标准化类型4.1.8 直方图的外观4.1.9 一列不同值的几个…

MySQL基础篇第10章(创建和管理表)

1. 基础知识 1.1 一条数据存储的过程 存储数据是处理数据的第一步 。只有正确地把数据存储起来&#xff0c;我们才能进行有效的处理和分析。否则&#xff0c;只 能是一团乱麻&#xff0c;无从下手。 那么&#xff0c;怎样才能把用户各种经营相关的、纷繁复杂的数据&#xff…

npm 包 chalk-next 被开发者投毒,源码 SRC 目录被删除

一、事件简述 1月5日&#xff0c;有开发者在 twitter 中发文称遭遇了名为 chalk-next 的组件投毒事件&#xff0c;该组件存在收集配置信息和删除本地文件的恶意逻辑&#xff0c;当前 NPM 仓库已经下线了该组件。 chalk-next 组件的开发者也是 vue-admin-beautiful 项目的作者 …

配对交易策略设计

可交易的一个关键要求是两个股票的对数价格序列之间存在均衡关系。 而均衡关系由两个值描述&#xff1a;协整系数以及均衡值。一旦确定这两个值&#xff0c;它们就可以用来构建两种股票的对数价格的线性组合&#xff0c;即所谓的价差。配对交易是对价差均值回归特性的押注。当…

Gigabyte B450 Aorus Elite AMD Ryzen 5 3600电脑 Hackintosh 黑苹果efi引导文件

硬件型号驱动情况主板Gigabyte B450 Aorus Elite处理器AMD Ryzen 5 3600已驱动内存16GB Samsung DDR3 1600MHz已驱动硬盘Samsung 840 Evo 250GB已驱动显卡AMD Radeon RX570 4gb已驱动声卡Realtek ALC892已驱动网卡Realtek 8111G已驱动无线网卡蓝牙Asus AX3000 Dual Band PCI-E …

(一)云原生基础概念-容器-Kubernets

文章目录云原生云原生历程云原生技术范畴云原生与传统部署云原生关键技术传统vs微服务vsServerlessServerless容器分层复用模式容器运行构建镜像容器引擎架构-moby容器和VM之间的差异Kubernetes调度自动恢复水平伸缩总架构Master架构Node架构Pod一个kubernet架构VolumeDeployme…