算法打卡day32

今日任务:

1)738.单调递增的数字

2)968.监控二叉树

738.单调递增的数字

题目链接:738. 单调递增的数字 - 力扣(LeetCode)

文章讲解:代码随想录 (programmercarl.com)

视频讲解:贪心算法,思路不难想,但代码不好写!LeetCode:738.单调自增的数字哔哩哔哩bilibili

思路:

这个问题的解题思路是通过从右往左遍历数字,找到第一个比右边数字大的位置 i,然后将位置 i 上的数字减一,并将位置 i 右侧的所有数字都变成9。这样可以保证最终得到的数字是小于或等于原始数字的最大单调递增数字。

具体的步骤如下:

  1. 将整数转换为数字列表,便于按位处理。
  2. 从倒数第二个位置开始向左遍历字符串列表,直到第一个位置。
  3. 在遍历过程中,如果当前数字比后一个数字大,说明需要将当前数字减一,并将后面的数字全部置为9。
  4. 最后将列表转换为整数并返回。

通过这样的操作,可以确保得到的数字是小于或等于原始数字的最大单调递增数字。

class Solution:def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:# 如果区间集合为空,返回0if not intervals:return 0intervals.sort(key=lambda x: x[0])# 初始化移除区间的数量为0remove_count = 0# 初始化上一个不重叠区间的结束位置为第一个区间的结束位置end = intervals[0][1]for i in intervals[1:]:# 存在重叠区间if i[0] < end:# 更新重叠区间的右边界:选一个结束位置小的区间,减少重叠end = min(i[1],end)remove_count += 1else:end = i[1]return remove_count

968.监控二叉树

题目链接:968. 监控二叉树 - 力扣(LeetCode)

文章讲解:代码随想录 (programmercarl.com)

视频讲解:贪心算法,二叉树与贪心的结合,有点难...... LeetCode:968.监督二叉树哔哩哔哩bilibili

思路:

  1. 对于每个节点,考虑其三种状态:

    • 状态0:表示当前节点没有被覆盖。
    • 状态1:表示当前节点有摄像头。
    • 状态2:表示当前节点被覆盖,但没有摄像头。
  2. 采用后序遍历(左-右-根)的方式遍历二叉树:

    • 左右节点至少有一个无覆盖的情况:如果左子节点或右子节点的状态为0(未被覆盖),则当前节点需要放置摄像头(状态1)。
    • 左右节点至少有一个有摄像头:如果左子节点或右子节点的状态为1(有摄像头),则当前节点已经被覆盖(状态2)。
      • left == 1 && right == 2 左节点有摄像头,右节点有覆盖
      • left == 2 && right == 1 左节点有覆盖,右节点有摄像头
      • left == 1 && right == 1 左右节点都有摄像头
    • 左右节点都有覆盖:如果左子节点且右子节点的状态为2(被覆盖但没有摄像头),则当前节点不需要放置摄像头,但需要标记为未被覆盖(状态0)。
  3. 对于根节点,如果其状态为0,则需要额外放置一个摄像头(状态1)。

  4. 统计放置的摄像头数量即为所需的最小摄像头数量。

class Solution:# Greedy Algo:# 从下往上安装摄像头:跳过leaves这样安装数量最少,局部最优 -> 全局最优# 先给leaves的父节点安装,然后每隔两层节点安装一个摄像头,直到Head# 0: 该节点未覆盖# 1: 该节点有摄像头# 2: 该节点有覆盖def minCameraCover(self, root: TreeNode) -> int:# 定义递归函数result = [0]  # 用于记录摄像头的安装数量if self.traversal(root, result) == 0:result[0] += 1return result[0]def traversal(self, cur: TreeNode, result: List[int]) -> int:if not cur:return 2left = self.traversal(cur.left, result)right = self.traversal(cur.right, result)# 情况1: 左右节点都有覆盖if left == 2 and right == 2:return 0# 情况2:# left == 0 && right == 0 左右节点无覆盖# left == 1 && right == 0 左节点有摄像头,右节点无覆盖# left == 0 && right == 1 左节点无覆盖,右节点有摄像头# left == 0 && right == 2 左节点无覆盖,右节点覆盖# left == 2 && right == 0 左节点覆盖,右节点无覆盖if left == 0 or right == 0:result[0] += 1return 1# 情况3:# left == 1 && right == 2 左节点有摄像头,右节点有覆盖# left == 2 && right == 1 左节点有覆盖,右节点有摄像头# left == 1 && right == 1 左右节点都有摄像头if left == 1 or right == 1:return 2

感想:

有点难,情况比较多。仅理解。

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

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

相关文章

(Java)数据结构——正则表达式

前言 本博客是博主用于复习数据结构以及算法的博客&#xff0c;如果疏忽出现错误&#xff0c;还望各位指正。 正则表达式概念 正则表达式&#xff0c;又称规则表达式&#xff08;Regular Expression&#xff09;&#xff0c;是一种文本模式&#xff0c;包括普通字符&#xf…

初学网络编程

网络编程是指编写能够在网络环境中运行&#xff0c;进行数据通信的程序的过程。它涵盖了从建立网络连接、发送和接收数据&#xff0c;到关闭连接等一系列操作。网络编程是开发网络应用程序的基础&#xff0c;它使得不同的计算机和设备能够通过网络进行数据交换和通信。 三个核…

微机消谐装置能够有效消除电网中的谐波干扰

随着电力技术的飞速发展&#xff0c;电网系统的稳定性与安全性成为了电力工业关注的重点。在这个背景下&#xff0c;微机消谐装置以其卓越的性能和广泛的应用领域&#xff0c;逐渐成为了电网系统中不可或缺的一部分。 微机消谐装置是一种基于微处理器技术的先进设备&#xff0c…

ELK企业级日志分析系统(elasticsearch+logstash+kibana)

目录 一.ELK概述 1.定义 &#xff08;1&#xff09;ElasticSearch &#xff08;2&#xff09;Kiabana &#xff08;3&#xff09;Logstash &#xff08;4&#xff09;Filebeat 2.filebeat结合logstash带来好处 3.为什么要是用ELK&#xff1f; 4.完整日志系统基本特征 …

无界面 centOS 中使用 DrissionPage

无界面 centOS 中使用 DrissionPage 1. centos 安装 chrome2. python 代码DrissionPage简介 某电影网站使用了加密js&#xff0c;无法直接从主页上爬取电影信息&#xff0c;只好借助 selenium 等工具。selenium 需要在服务器上安装浏览器和对应的 driver。我的服务器是无界面 c…

Docker学习笔记(一):入门篇,Docker概述、基本组成等,对Docker有一个初步的认识

前言 记录时间 [2024-4-5] 在先前的文章中&#xff0c;笔者进行了Windows系统下YOLOv8模型的简单测试&#xff0c;并由此引发思考&#xff1a;是否能尝试将此模型运行在Linux中呢&#xff1f;又或者&#xff0c;运行在Docker中。关于Docker的学习就这么展开了。 本文便是有关D…

RX8130CE为用户提供带复位延迟和主备电管理的解决方案

实时时钟作为设备的精确时钟来源&#xff0c;其作用如同人的心脏&#xff0c;为设备提供准确稳定的心跳.而便携式设备由于应用场景多变&#xff0c;所以对内部元器件要求也相对较高&#xff0c;这就对作为核心器件的实时时钟模块提出不少挑战。世强代理品牌EPSON实时钟模块产品…

Web3:下一代互联网的崛起与革命性展望

随着科技的飞速发展&#xff0c;互联网正在经历一场前所未有的变革。Web3&#xff0c;作为互联网的下一代&#xff0c;正以其独特的魅力和潜力&#xff0c;引领着这场革命性的浪潮。本文旨在深入探讨Web3的概念、特点以及对未来的展望&#xff0c;为读者呈现一个全面而深入的We…

【Linux】开始了解重定向

送给大家一句话&#xff1a; 人真正的名字是&#xff1a;欲望。所以你得知道&#xff0c;消灭恐惧最有效的办法&#xff0c;就是消灭欲望。 – 史铁生 《我与地坛》 开始了解重定向 1 前言2 重定向与缓冲区2.1 文件描述符分配规则2.2 重定向的现象2.3 重定向的理解2.4 缓冲区…

【Python】探索Python中的aiohttp:构建高效并发爬虫

后来 我总算学会了 如何去爱 可惜你 早已远去 消失在人海 后来 终于在眼泪中明白 有些人 一旦错过就不再 &#x1f3b5; HouZ/杨晓雨TuTu《后来》 在数据密集和网络密集的任务中&#xff0c;提高程序的执行效率是非常重要的。Python作为一门强大的编程语言…

jmeter生成随机数的详细步骤及使用方式

Apache JMeter 是一个用于测试性能的开源工具&#xff0c;它可以模拟多种类型的负载并测量应用程序的性能。在 JMeter 中生成随机数可以通过使用预定义的函数来实现。以下是生成随机数的详细步骤及使用方式&#xff1a; 安装 JMeter&#xff1a; 首先&#xff0c;你需要在你的计…

5.6 mybatis之RowBounds分页用法

文章目录 mybatis 中&#xff0c;使用 RowBounds 进行分页&#xff0c;非常方便&#xff0c;不需要在 sql 语句中写 limit&#xff0c;即可完成分页功能。但是由于它是在 sql 查询出所有结果的基础上截取数据的&#xff0c;所以在数据量大的sql中并不适用&#xff0c;它更适合在…

【Python】OPC UA 服务器扫描工具

引言 OPC UA&#xff08;开放平台通信统一架构&#xff09;是一种跨平台的、开放的数据交换标准&#xff0c;广泛用于工业自动化领域。在工业4.0的大背景下&#xff0c;OPC UA服务器在网络中的部署日益增多&#xff0c;如何快速有效地发现这些服务器成为了一个实际需求。本文将…

UI自动化测试重点思考(下)--装饰器/生成器/夹具的使用/描述符的作用/ddt驱动/多线程

UI自动化测试重点思考--装饰器 装饰器装饰器定义装饰器代码示例装饰器的执行如何将装饰器融合到pytest框架里面 生成器创建生成器生成器的定义如何将生成器融合到pytest框架里面 fixture&#xff08;夹具&#xff09;使用pytest fixture 中 scope 参数的详细解释 描述符的总结描…

【Sentinel的限流使用】⭐️SpringBoot整合Sentinel实现Api的限流

目录 前言 一、Sentinel下载 二、SpringBoot 整合 Sentinel 三、流控规则 章末 前言 小伙伴们大家好&#xff0c;上次使用OpenFeign时用到了 Hystrix实现熔断和限流的功能&#xff0c;但是发现该工具已经停止维护了&#xff0c;于是想到了Spring Cloud Alibaba开发的Sentin…

docker 容器迁移

目录 1、将容器打成镜像后迁移 2、导出和导入容器 1、将容器打成镜像后迁移 &#xff08;1&#xff09;将容器打成镜像 # 打成镜像 mycentos docker commit -m "my centos" -a "author" 2d1fba0978 mycentos # 打成镜像 mycentos&#xff0c;tag …

高创新 | Matlab实现OOA-CNN-GRU-Attention鱼鹰算法优化卷积门控循环单元注意力机制多变量回归预测

高创新 | Matlab实现OOA-CNN-GRU-Attention鱼鹰算法优化卷积门控循环单元注意力机制多变量回归预测 目录 高创新 | Matlab实现OOA-CNN-GRU-Attention鱼鹰算法优化卷积门控循环单元注意力机制多变量回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现OOA…

Discoverydevice.java和activity_discoverydevice.xml

一、Discoverydevice.java public class Discoverydevice extends AppCompatActivity {private DeviceAdapter mAdapter2;private final List<DeviceClass> mbondDeviceList new ArrayList<>();//搜索到的所有已绑定设备保存为列表private final List<Devic…

设计模式学习(四)——《大话设计模式》

设计模式学习&#xff08;四&#xff09;——《大话设计模式》 1.泛型 允许在编码时使用类型参数&#xff0c;从而使得代码更加灵活、可重用。泛型可以应用于类、接口、方法中&#xff0c;通过这种方式&#xff0c;可以编写出适用于多种数据类型的通用代码&#xff0c;而不是…

如何在CentOS7.x上生成自签名SSL证书

在配置HTTPS连接时&#xff0c;SSL证书是确保数据传输安全性的关键组件。自签名证书是一种不通过证书颁发机构&#xff08;CA&#xff09;签发的证书&#xff0c;适用于测试和内部使用。以下是在CentOS 7.x系统上生成自签名证书的详细步骤。 1. 安装OpenSSL OpenSSL是一个强大…