代码随想录算法训练营第25天 | 216.组合总和III、17.电话号码的字母组合

本文主要是介绍代码随想录算法训练营第25天 | 216.组合总和III、17.电话号码的字母组合,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

代码随想录算法训练营第25天 | 216.组合总和III、17.电话号码的字母组合

  • 自己看到题目的第一想法
  • 看完代码随想录之后的想法

链接: 216.组合总和III
链接: 17.电话号码的字母组合

自己看到题目的第一想法

216.组合总和III:递归函数终止条件为搜索得到的数相加为n,其他逻辑和组合一样。
17.电话号码的字母组合:先把各个字母对应数字的映射关系存一下,针对读取数字对应字母,采用回溯来解决。具体细节是真的不太清楚。

看完代码随想录之后的想法

216.组合总和III:通过这道题,并不知道组合个数的情况下也更能看出回溯算法相对于for循环的优势。要注意的点就是:在画树形图的时候,剩余集合的范围是什么?理解完树形图之后再看代码。
这里贴上卡哥网站的树形图:
在这里插入图片描述
再贴上卡哥总结的回溯算法模板:

void backtracking(参数){if(终止条件){存放结果;return;}for(选择:本层集合中元素(树中结点孩子的数量就是集合的大小)){处理节点;backtracking(路径,选择列表);//递归回溯,撤销处理结果;}}

结合三部曲去一步步填充内容(1)参数和返回值 (2)结束条件:根据k来控制树形图的深度,如果树形图的深度达到了题目要求的集合数量,就判断是否此时路径和为题目要求的n,如果满足题目要求就将结果添加入结果集里。所以此时也可以看出需要声明全局变量path用于存储路径元素,result用于存储结果集。(3)处理逻辑:首先是for循环里的集合元素集,要确定起始点,和结束点,处理节点部分就是路径更新和求和,之后在进行逆操作。
针对减枝操作,有两点,一方面是当求和已经大于目标和的时候就可以直接返回了,可以直接在终止条件中进行;另一方面是集合数量要在满足题意的范围内,可以在for循环中对集合元素的终止点进行限定。
17.电话号码的字母组合:
这道题和前面的组合题目不一样的地方就是,前面的组合题目是在一个集合里,而这道题在不同集合里取元素的组合。
注意的点:画树形图要明白树的宽度和深度是由什么控制的。

这篇关于代码随想录算法训练营第25天 | 216.组合总和III、17.电话号码的字母组合的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/960325

相关文章

JAVA项目swing转javafx语法规则以及示例代码

《JAVA项目swing转javafx语法规则以及示例代码》:本文主要介绍JAVA项目swing转javafx语法规则以及示例代码的相关资料,文中详细讲解了主类继承、窗口创建、布局管理、控件替换、... 目录最常用的“一行换一行”速查表(直接全局替换)实际转换示例(JFramejs → JavaFX)迁移建

Go异常处理、泛型和文件操作实例代码

《Go异常处理、泛型和文件操作实例代码》Go语言的异常处理机制与传统的面向对象语言(如Java、C#)所使用的try-catch结构有所不同,它采用了自己独特的设计理念和方法,:本文主要介绍Go异... 目录一:异常处理常见的异常处理向上抛中断程序恢复程序二:泛型泛型函数泛型结构体泛型切片泛型 map三:文

MyBatis中的两种参数传递类型详解(示例代码)

《MyBatis中的两种参数传递类型详解(示例代码)》文章介绍了MyBatis中传递多个参数的两种方式,使用Map和使用@Param注解或封装POJO,Map方式适用于动态、不固定的参数,但可读性和安... 目录✅ android方式一:使用Map<String, Object>✅ 方式二:使用@Param

SpringBoot实现图形验证码的示例代码

《SpringBoot实现图形验证码的示例代码》验证码的实现方式有很多,可以由前端实现,也可以由后端进行实现,也有很多的插件和工具包可以使用,在这里,我们使用Hutool提供的小工具实现,本文介绍Sp... 目录项目创建前端代码实现约定前后端交互接口需求分析接口定义Hutool工具实现服务器端代码引入依赖获

利用Python在万圣节实现比心弹窗告白代码

《利用Python在万圣节实现比心弹窗告白代码》:本文主要介绍关于利用Python在万圣节实现比心弹窗告白代码的相关资料,每个弹窗会显示一条温馨提示,程序通过参数方程绘制爱心形状,并使用多线程技术... 目录前言效果预览要点1. 爱心曲线方程2. 显示温馨弹窗函数(详细拆解)2.1 函数定义和延迟机制2.2

Springmvc常用的注解代码示例

《Springmvc常用的注解代码示例》本文介绍了SpringMVC中常用的控制器和请求映射注解,包括@Controller、@RequestMapping等,以及请求参数绑定注解,如@Request... 目录一、控制器与请求映射注解二、请求参数绑定注解三、其他常用注解(扩展)四、注解使用注意事项一、控制

C++简单日志系统实现代码示例

《C++简单日志系统实现代码示例》日志系统是成熟软件中的一个重要组成部分,其记录软件的使用和运行行为,方便事后进行故障分析、数据统计等,:本文主要介绍C++简单日志系统实现的相关资料,文中通过代码... 目录前言Util.hppLevel.hppLogMsg.hppFormat.hppSink.hppBuf

VS Code中的Python代码格式化插件示例讲解

《VSCode中的Python代码格式化插件示例讲解》在Java开发过程中,代码的规范性和可读性至关重要,一个团队中如果每个开发者的代码风格各异,会给代码的维护、审查和协作带来极大的困难,这篇文章主... 目录前言如何安装与配置使用建议与技巧如何选择总结前言在 VS Code 中,有几款非常出色的 pyt

利用Python将PDF文件转换为PNG图片的代码示例

《利用Python将PDF文件转换为PNG图片的代码示例》在日常工作和开发中,我们经常需要处理各种文档格式,PDF作为一种通用且跨平台的文档格式,被广泛应用于合同、报告、电子书等场景,然而,有时我们需... 目录引言为什么选择 python 进行 PDF 转 PNG?Spire.PDF for Python

深入理解Mysql OnlineDDL的算法

《深入理解MysqlOnlineDDL的算法》本文主要介绍了讲解MysqlOnlineDDL的算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小... 目录一、Online DDL 是什么?二、Online DDL 的三种主要算法2.1COPY(复制法)