代码随想录算法训练营第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

相关文章

Django开发时如何避免频繁发送短信验证码(python图文代码)

《Django开发时如何避免频繁发送短信验证码(python图文代码)》Django开发时,为防止频繁发送验证码,后端需用Redis限制请求频率,结合管道技术提升效率,通过生产者消费者模式解耦业务逻辑... 目录避免频繁发送 验证码1. www.chinasem.cn避免频繁发送 验证码逻辑分析2. 避免频繁

精选20个好玩又实用的的Python实战项目(有图文代码)

《精选20个好玩又实用的的Python实战项目(有图文代码)》文章介绍了20个实用Python项目,涵盖游戏开发、工具应用、图像处理、机器学习等,使用Tkinter、PIL、OpenCV、Kivy等库... 目录① 猜字游戏② 闹钟③ 骰子模拟器④ 二维码⑤ 语言检测⑥ 加密和解密⑦ URL缩短⑧ 音乐播放

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi

Spring Boot Actuator应用监控与管理的详细步骤

《SpringBootActuator应用监控与管理的详细步骤》SpringBootActuator是SpringBoot的监控工具,提供健康检查、性能指标、日志管理等核心功能,支持自定义和扩展端... 目录一、 Spring Boot Actuator 概述二、 集成 Spring Boot Actuat

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

一文解密Python进行监控进程的黑科技

《一文解密Python进行监控进程的黑科技》在计算机系统管理和应用性能优化中,监控进程的CPU、内存和IO使用率是非常重要的任务,下面我们就来讲讲如何Python写一个简单使用的监控进程的工具吧... 目录准备工作监控CPU使用率监控内存使用率监控IO使用率小工具代码整合在计算机系统管理和应用性能优化中,监

Python实现MQTT通信的示例代码

《Python实现MQTT通信的示例代码》本文主要介绍了Python实现MQTT通信的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 安装paho-mqtt库‌2. 搭建MQTT代理服务器(Broker)‌‌3. pytho

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤