代码随想录算法训练营第32天—贪心算法06 | ● *738.单调递增的数字 ● *968.监控二叉树 ● 总结

本文主要是介绍代码随想录算法训练营第32天—贪心算法06 | ● *738.单调递增的数字 ● *968.监控二叉树 ● 总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

*738.单调递增的数字

https://programmercarl.com/0738.%E5%8D%95%E8%B0%83%E9%80%92%E5%A2%9E%E7%9A%84%E6%95%B0%E5%AD%97.html

  • 考点
    • 贪心算法
  • 我的思路
    • 暴力解法
  • 视频讲解关键点总结
    • 几个关键点
    • 一,如果当前数位小于上一数位,如87,则应直接将上一数位减1,当前数位设为9,如79,因为这是满足题意的最大结果
    • 二,如果直接在循环过程中进行上述修改操作,将会在某些情况下发生遗漏,如1000将被修改为900而不是999,1323将被修改为1293而不是1299;因此,应在循环过程中仅将不满足要求的上一数位减1,而记录最靠前的那个需要改为9的数位,并在循环之后将该数位之后全部改为9(这样才满足递增的要求)
  • 我的思路的问题
    • 时间复杂度超限
  • 代码书写问题
    • 直接修改字符串变量是不允许的,因此可以采用切片之后相加的方式生成新字符串
  • 可执行代码
class Solution:def monotoneIncreasingDigits(self, n: int) -> int:n = str(n)index = len(n)for i in range(len(n) - 1, 0, -1):if int(n[i]) < int(n[i - 1]):index = in = n[:i - 1] + str(int(n[i - 1]) - 1) + n[i:]n = n[:index] + ('9' * (len(n) - index))return int(n)

*968.监控二叉树

https://programmercarl.com/0968.%E7%9B%91%E6%8E%A7%E4%BA%8C%E5%8F%89%E6%A0%91.html

  • 考点
    • 贪心算法
    • 二叉树
  • 我的思路
    • 无思路
  • 视频讲解关键点总结
    • 关键点如下:
    • 一、怎么放摄像头?应从底向上放(对应二叉树的后序遍历),因为从叶子节点向上遍历才能尽可能利用摄像头的上下覆盖特性,如果从根节点开始,由于根节点数目远少于叶子节点,其所使用的摄像头数目将超过从下向上遍历
    • 二、怎么判断当前节点是否要放摄像头?利用子节点传上来的状态进行判断
      • 状态0,子节点没有被摄像头覆盖
      • 状态1,子节点有摄像头
      • 状态2,子节点被摄像头覆盖
      • 若两个子节点均被摄像头覆盖,则当前节点应返回状态0
      • 若两个子节点有至少其一没有被覆盖,则当前节点应返回状态1,同时结果计数加1
      • 若两个子节点有至少其一有摄像头,则当前节点应返回状态2
    • 三、如果找到了空节点,应该将其设置为什么状态?空节点应设置为状态2,这样当前节点才会返回状态0
    • 四、按照如上思路遍历完二叉树后,根节点有可能没有被摄像头覆盖,此时应判断二叉树的递归遍历函数返回值是否为0(即根节点为状态0),如果是,则应结果计数加1
  • 我的思路的问题
    • 无思路
  • 代码书写问题
    • 这里的结果变量不能直接定义一个整型变量,因为整型变量在python里为不可变类型,因此在递归遍历时对其进行的修改并没有改变原始变量的值,而是在递归函数里创建了一个新的局部变量,所以使用列表这种可变类型来进行代替
  • 可执行代码
class Solution:def traversal(self, root, result):if root is None:return 2condition1 = self.traversal(root.left, result)condition2 = self.traversal(root.right, result)if condition1 == 2 and condition2 == 2:return 0elif condition2 == 0 or condition1 == 0:result[0] += 1return 1elif condition2 == 1 or condition1 == 1:return 2def minCameraCover(self, root: Optional[TreeNode]) -> int:result = [0]if self.traversal(root, result) == 0:result[0] += 1return result[0]

贪心算法总结

贪心算法总结

这篇关于代码随想录算法训练营第32天—贪心算法06 | ● *738.单调递增的数字 ● *968.监控二叉树 ● 总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

使用C#代码计算数学表达式实例

《使用C#代码计算数学表达式实例》这段文字主要讲述了如何使用C#语言来计算数学表达式,该程序通过使用Dictionary保存变量,定义了运算符优先级,并实现了EvaluateExpression方法来... 目录C#代码计算数学表达式该方法很长,因此我将分段描述下面的代码片段显示了下一步以下代码显示该方法如

使用zabbix进行监控网络设备流量

《使用zabbix进行监控网络设备流量》这篇文章主要为大家详细介绍了如何使用zabbix进行监控网络设备流量,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装zabbix配置ENSP环境配置zabbix实行监控交换机测试一台liunx服务器,这里使用的为Ubuntu22.04(

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

Python中实现进度条的多种方法总结

《Python中实现进度条的多种方法总结》在Python编程中,进度条是一个非常有用的功能,它能让用户直观地了解任务的进度,提升用户体验,本文将介绍几种在Python中实现进度条的常用方法,并通过代码... 目录一、简单的打印方式二、使用tqdm库三、使用alive-progress库四、使用progres

python多进程实现数据共享的示例代码

《python多进程实现数据共享的示例代码》本文介绍了Python中多进程实现数据共享的方法,包括使用multiprocessing模块和manager模块这两种方法,具有一定的参考价值,感兴趣的可以... 目录背景进程、进程创建进程间通信 进程间共享数据共享list实践背景 安卓ui自动化框架,使用的是

SpringBoot生成和操作PDF的代码详解

《SpringBoot生成和操作PDF的代码详解》本文主要介绍了在SpringBoot项目下,通过代码和操作步骤,详细的介绍了如何操作PDF,希望可以帮助到准备通过JAVA操作PDF的你,项目框架用的... 目录本文简介PDF文件简介代码实现PDF操作基于PDF模板生成,并下载完全基于代码生成,并保存合并P

springboot健康检查监控全过程

《springboot健康检查监控全过程》文章介绍了SpringBoot如何使用Actuator和Micrometer进行健康检查和监控,通过配置和自定义健康指示器,开发者可以实时监控应用组件的状态,... 目录1. 引言重要性2. 配置Spring Boot ActuatorSpring Boot Act

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

SpringBoot基于MyBatis-Plus实现Lambda Query查询的示例代码

《SpringBoot基于MyBatis-Plus实现LambdaQuery查询的示例代码》MyBatis-Plus是MyBatis的增强工具,简化了数据库操作,并提高了开发效率,它提供了多种查询方... 目录引言基础环境配置依赖配置(Maven)application.yml 配置表结构设计demo_st

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也