代码随想录算法训练营第三十七天 | 力扣 738.单调递增的数字, 968.监控二叉树
738.单调递增的数字
题目
738. 单调递增的数字
当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。
给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈 单调递增 。
解析
从后向前遍历,就可以重复利用上次比较得出的结果,
出现strNum[i - 1] > strNum[i]的情况(非单调递增),首先让strNum[i - 1]--,然后strNum[i]赋9
Java代码实现
public int monotoneIncreasingDigits(int n) {String[] str = String.valueOf(n).split("");int startFlag = str.length;for (int i = str.length - 1; i > 0; i--) {if (Integer.parseInt(str[i]) < Integer.parseInt(str[i - 1])) {str[i - 1] = String.valueOf(Integer.parseInt(str[i - 1]) - 1);startFlag = i;}}for (int i = startFlag; i < str.length; i++) {str[i] = "9";}return Integer.parseInt(String.join("", str));
}
968.监控二叉树
题目
968. 监控二叉树
给定一个二叉树,我们在树的节点上安装摄像头。
节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。
计算监控树的所有节点所需的最小摄像头数量。
解析
头结点放不放摄像头也就省下一个摄像头, 叶子节点放不放摄像头省下了的摄像头数量是指数阶别的。
所以我们要从下往上看,局部最优:让叶子节点的父节点安摄像头,所用摄像头最少,整体最优:全部摄像头数量所用最少!
- 0:该节点无覆盖
- 1:本节点有摄像头
- 2:本节点有覆盖
Java代码实现
int result = 0;
/*** 节点的状态值:* 0 表示无覆盖* 1 表示 有摄像头* 2 表示有覆盖* @param root 二叉树* @return 最小摄像头数*/
public int minCameraCover(TreeNode root) {if(treeCam(root)==0){result++;}return result;
}private int treeCam(TreeNode root) {if (root == null) {return 2;}int left = treeCam(root.left);int right = treeCam(root.right);if (left == 2 && right == 2) {return 0;} else if (left == 0 || right == 0) {result++;return 1;} else {// 此时至少一个摄像头return 2;}
}相关文章:
代码随想录算法训练营第三十七天 | 力扣 738.单调递增的数字, 968.监控二叉树
738.单调递增的数字 题目 738. 单调递增的数字 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时,我们称这个整数是单调递增的。 给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈 单调递增 。 解析 从后向前遍历…...
C++内存总结
1.2 C内存 参考 https://www.nowcoder.com/issue/tutorial?tutorialId93&uuid8f38bec08f974de192275e5366d8ae24 1.2.1 简述一下堆和栈的区别 参考回答 区别: 堆栈空间分配不同。栈由操作系统自动分配释放 ,存放函数的参数值,局部变…...
开发移动端官网总结_Vue2.x
目录 1、自定义加载中效果 2、HTML页面注入环境变量 / 加载CDN和本地库 3、在 Vue 中使用 wow.js 4、过渡路由 5、全局监听当前设备,切换PC端和移动端 6、移动端常用初始化样式 7、官网默认入口文件 8、回到顶部滑动过渡效果(显示与隐藏、滑动置…...
Zookeeper+消息队列Kafka
一、Zookeeper 概述 官方下载地址:Index of /dist/zookeeper 1.1 Zookeeper 定义 Zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目。 1.2 Zookeeper 工作机制 Zookeeper从设计模式角度来理解:是一个基于观察者模式设…...
【滤波】设计卡尔曼滤波器
本文主要翻译自rlabbe/Kalman-and-Bayesian-Filters-in-Python的第8章节08-Designing-Kalman-Filters(设计卡尔曼滤波器)。 %matplotlib inline#format the book import book_format book_format.set_style()简介 在上一章节中,我们讨论了教…...
redis主备切换,哨兵模式,缓存穿透、缓存击穿、缓存雪崩问题
主备切换 主从复制指的是把一台Redis服务器的数据复制到其他Redis服务器上,前者称为主节点Master,后者称为从节点Slave,只能从Master单向复制到Slave,一般Master以写操作为主,Slave以读操作为主,实现读写分…...
2023山东icpc省赛总结
距离比赛结束已经一天多了,现在的感觉就是三个字:意难平。 这是我们第一次打现场赛,去之前真的是很激动。因为我们比赛前做了很多其他省的省赛模拟,也做了几套今年别的省的题目,做完会去搜题解,会看到别人写…...
linux0.12-12-fs
[606页] 第12章 文件系统 606–12-1-总体功能 607–12-1-1-MINIX文件系统 611–12-1-2-文件类型、属性和目录项 615–12-1-3-高速缓冲区 616–12-1-4-文件系统底层函数 616–12-1-5-文件中数据的访问操作 618–12-1-6-文件和目录管理系统调用 619–12-1-7-360KB软盘中文件系统…...
快速入门SpringMVC 学习
目录 SpringMVC 定义 MVC定义 创建SpringMVC项目 SpringMVC掌握功能 一、连接功能 RequestMapping(请求映射) GetMapping 和 PostMapping 二、获取参数功能 传递单个参数/多个参数 注意点: RequestParam(前后端参数映射) 前后端参数映射 RequestParam特…...
leetcode96--不同的二叉搜索树[java]
不同的二叉搜索树 leetcode 96 题 不同的二叉搜索树题目描述暴力递归解题思路代码演示执行效率 递归 缓存解题思路代码演示执行效率 动态规划专题 leetcode 96 题 不同的二叉搜索树 原题链接: 难度—中等 https://leetcode.cn/problems/unique-binary-search-trees/ 题目描述 …...
【Spring 项目的创建和使用】
🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 1. 创建 Spring 项目 2. 创建一个 普通 Maven…...
数据类型.
数据类型 数据类型分类 数值类型 tinyint类型 数值越界测试: mysql> create table tt1(num tinyint); Query OK, 0 rows affected (0.02 sec)mysql> insert into tt1 values(1); Query OK, 1 row affected (0.00 sec)mysql> insert into tt1 values(128…...
深入了解JavaScript中的Promise
在JavaScript中,异步编程是必不可少的。过去,我们通常使用回调函数来处理异步操作,但回调地狱(callback hell)和复杂的错误处理使得代码难以维护。为了解决这些问题,ES6引入了Promise,它是一种更…...
Solidity基础六
生活本来就是平凡琐碎的,哪有那么多惊天动地的大事,快乐的秘诀就是不管对大事小事都要保持热情 目录 一、Solidity的特殊变量(全局) 二、Solidity的不可变量 immutable的赋值方式 三、Solidity的事件与日志 事件和日志加深理解 四、Solidity的异常…...
自学网络安全解决问题方法
自学网络安全很容易学着学着就迷茫了,找到源头问题,解决它就可以了,所以首先咱们聊聊,学习网络安全方向通常会有哪些问题,看到后面有惊喜哦 1、打基础时间太长 学基础花费很长时间,光语言都有几门…...
Java之旅(七)
Java 异常 Java异常(Exception)是在程序运行过程中出现错误或异常情况时,由程序自动抛出,导致程序无法正常运行,用于向上层调用程序传递错误信息或中断程序执行的一种机制。 异常与错误不同,错误是由于程…...
测试报告模板二
项目名称 系统测试报告 平台测试小组 2023年x月xx日 文档信息 文档名称: 作者:...
C语句概述
1 、 C 语句分类: ①控制语句:二个分支语句( if-else 、 switch ),三个循环语句( for 、 while 、 do - while ),四个转移语句( continue 、 break 、 goto 、 return…...
C++ [STL之vector模拟实现]
本文已收录至《C语言和高级数据结构》专栏! 作者:ARMCSKGT STL之vector模拟实现 前言正文空间结构默认成员函数构造函数拷贝构造函数赋值重载析构函数关于数据拷贝问题 迭代器容量操作查询容量容量操作 数据访问下标访问头尾数据访问 数据增删尾插尾删重…...
【算法竞赛进阶指南】141.周期 题解 KMP 最小循环节
题目描述 一个字符串的前缀是从第一个字符开始的连续若干个字符,例如 abaab 共有 5 5 5 个前缀,分别是 a,ab,aba,abaa,abaab。 我们希望知道一个 N N N 位字符串 S S S 的前缀是否具有循环节。 换言之…...
地理数据可视化:地图绑定与空间分析
地理数据可视化:地图绑定与空间分析 前言 大家好,我是前端老炮儿。今天咱们来聊聊地理数据可视化! 地理数据可视化是数据可视化领域的一个重要分支,它可以帮助我们直观地展示和分析空间数据。无论是地图展示、区域分析还是位置追踪…...
ZIP文件怎么加密?3种方法可行
如果你想给ZIP文件设置密码保护,那就一定要安装解压缩软件,因为Windows自带的ZIP压缩,点右键选“发送到”→“压缩文件夹”——这个功能不支持加密。 那么我们可以选择常用的软件来给ZIP文件加密,方法都很简单,下面分…...
2026年最新亲测3款生成会议纪要免费工具推荐,10分钟出稿非常好用!
兄弟们,我来了。作为一个天天泡在会议室、钉钉和飞书里来回切换的职场老兵,我太懂“开会一时爽,整理火葬场”的痛苦了。这几年,各种AI录音转文字、语音转写工具层出不穷,但真正能打、能免费白嫖、还不乱收费的…...
3分钟实现GitHub界面汉化:浏览器插件让GitHub说中文
3分钟实现GitHub界面汉化:浏览器插件让GitHub说中文 【免费下载链接】github-chinese GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese 你是否曾因GitHub的英…...
Unity PC端微信扫码登录:不拉起浏览器的原生UI集成方案
1. 这不是“微信扫码登录”的常规玩法,而是PC端Unity游戏的UI原生集成方案你有没有遇到过这样的场景:在Unity开发的PC单机游戏或局域网对战工具里,想让用户用微信账号快速登录,但一接入微信开放平台的标准OAuth2流程,点…...
Chrome无痕模式下BiDi协议断连原因与解决方案
1. 这个问题不是“能不能用”,而是“为什么一开无痕就断连”如果你在用 Selenium 4.11 集成 Chrome DevTools Protocol(CDP)或更新的 BiDi(Browser Interaction)协议做自动化时,突然发现:本地调…...
从V2L到V2G:深度解析双向OBC的HIL测试如何模拟真实用车场景(含CANoe SmartCharging配置)
从露营供电到电网互动:双向OBC的HIL测试实战指南 清晨的山谷里,一辆新能源车静静停驻在营地旁。车主取出便携式电烤盘,将充电枪插入车辆交流充电口,几分钟后烤盘上的牛排开始滋滋作响——这看似简单的场景背后,是双向O…...
DownKyi跨平台版终极指南:B站视频下载与音视频分离完整教程
DownKyi跨平台版终极指南:B站视频下载与音视频分离完整教程 【免费下载链接】downkyicore 哔哩下载姬(跨平台版)downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提…...
仪式感,从来与你无关
2.2万人点赞的扎心评论:仪式感,从来都与你无关 有2.2万个男生偷偷点了赞。 没有歇斯底里的控诉,没有长篇大论的抱怨,只有一句轻飘飘的陈述,和一句"兄弟,没绷住"。 但就是这两句话,像一根针,精准地扎破了无数男生藏在心里最深处的、不敢说出口的委屈。 01…...
AI周报如何成为技术决策的精准导航仪
1. 项目概述:一份真正值得花时间读的AI周报,到底长什么样?我做技术类内容整理和分发已经十一年了,从2014年最早在知乎写“每周机器学习论文速览”,到后来运营三个垂直技术社群、给二十多家企业做AI落地咨询,…...
