代码随想录算法训练营Day31
力扣738.单调递增的数字【medium】
力扣968.监控二叉树【hard】
一、力扣738.单调递增的数字【medium】
题目链接:力扣738.单调递增的数字
视频链接:代码随想录
1、思路
- 先将整数转为字符串变成可迭代对象,再转为列表
- 从后向前遍历,才可以重复使用之前的结果
- 当遍历的数比前一个数小,我们就将前一个数-1,后面的数都赋值为9
- 最后返还结果先转为字符串再转为整数型
- 时间复杂度: O ( n ) O(n) O(n)
2、代码
class Solution:def monotoneIncreasingDigits(self, n: int) -> int:strNum = list(str(n))for i in range(len(strNum) - 1, 0, -1):if strNum[i-1] > strNum[i]:strNum[i-1] = str(int(strNum[i-1]) - 1)strNum[i: ] = '9' * (len(strNum) - i)return int(''.join(strNum))
3、代码问题
= list(str(n))
:这边这一步是必须的,因为整数不是可迭代对象,无法自动切割为列表,但是字符串可以strNum[i-1] = str(int(strNum[i-1]) - 1)
:这边这个也不可以直接对字符串-1操作,因为字符串是无法进行算术运算,必须先转为整数型- 而if语句里直接对字符串进行判断行得通的原因是:本质是比较它们的 ASCII 码值
二、力扣968.监控二叉树【hard】
题目链接:力扣力扣968.监控二叉树
视频链接:代码随想录
1、思路
-
-
这边要注意情况2必须考虑在情况3前,否则将会遗漏camera的数量,可以举个例子试试
-
-
时间复杂度: O ( n ) O(n) O(n)
2、代码
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:# Greedy Algo:# 从下往上安装摄像头:跳过leaves这样安装数量最少,局部最优 -> 全局最优# 先给leaves的父节点安装,然后每隔两层节点安装一个摄像头,直到Head# 0: 该节点未覆盖# 1: 该节点有摄像头# 2: 该节点有覆盖def minCameraCover(self, root: Optional[TreeNode]) -> int:result = [0]if self.traversal(root,result) == 0:result[0] += 1return result[0]def traversal(self, cur:Optional[TreeNode], result = List[int]) -> int:if not cur:return 2left = self.traversal(cur.left, result)right = self.traversal(cur.right, result)if left == 2 and right == 2:return 0elif left == 0 or right == 0:result[0] += 1return 1else:return 2
3、代码问题
result = [0]
:使用列表是为了绕过Python对不可变类型的传值限制,确保递归过程中所有调用共享同一计数器。- 这是Python中处理递归共享状态的常见技巧。如果追求代码清晰,类成员变量也是一种可选方案,但需注意副作用。
相关文章:
代码随想录算法训练营Day31
力扣738.单调递增的数字【medium】 力扣968.监控二叉树【hard】 一、力扣738.单调递增的数字【medium】 题目链接:力扣738.单调递增的数字 视频链接:代码随想录 1、思路 先将整数转为字符串变成可迭代对象,再转为列表从后向前遍历ÿ…...
LeetCode Hot100 刷题笔记(10)—— ACM格式输入输出练习
目录 Trick: 1. 只有输出 2. 单组_AB 3. 多组_AB_EOF形式 4. 多组_AB_T组形式 5. 多组_AB_零尾形式 6. 单组_一维数组 7. 多组_二维数组_T组形式 8. 单组_二维数组 9. 多组_二维数组_T组形式 10. 单组_字符串 11. 多组_字符串_T组形式 12. 单组_二维字符数组 13. 多组_带空格的…...
iPaaS集成平台在制造业有哪些应用场景
在制造业迈向智能化的进程中,“数据不通”“系统割裂”“响应迟缓”等问题如同隐形的锁链,束缚着企业转型升级的步伐。面对设备、系统、供应链之间错综复杂的连接需求,传统定制化开发周期长、成本高,难以满足快速变化的业务需求。…...
【Docker项目实战】使用Docker部署Gitblit服务器
【Docker项目实战】使用Docker部署Gitblit服务器 一、Gitblit介绍1.1 Gitblit 介绍1.2 主要特点 二、本次实践规划2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、下载Gitblit镜像五、部署Gitbli…...
基于瑞芯微RK3562 四核 ARM Cortex-A53 + 单核 ARM Cortex-M0——Linux应用开发手册
前 言 本文主要介绍TL3562-MiniEVM评估板的AMP(Asymmetric Multi-processing)开发案例,适用开发环境如下: Windows开发环境:Windows 7 64bit、Windows 10 64bit Linux开发环境:VMware16.2.5、Ubuntu20.04.6 64bit U-Boot:U-Boot-2017.09 Kernel:Linux-5.10.209 Lin…...
并查集(力扣1971)
并查集的功能:判断两个节点是否在同一个集合中/将两个节点加入同一集合中。模板如下: #include<iostream> #include<vector> using namespace std; const int n 1e6 5;//视题目具体节点数量而定,比节点数量稍大即可 vector<…...
Pinpoint - 大型分布式系统的 APM(应用性能管理)工具
文章目录 一、关于 Pinpoint最新版本(2024/10/23)-- v3.0.1PHP, PYTHON 二、概述支持的模块 一、关于 Pinpoint Pinpoint 是一个用于大型分布式系统的 APM(应用性能管理)工具,由 Java / PHP/PYTHON 编写。 受 Dapper …...
高级java每日一道面试题-2025年4月10日-微服务篇[Nacos篇]-Nacos的服务健康检查机制是如何工作的?
如果有遗漏,评论区告诉我进行补充 面试官: Nacos的服务健康检查机制是如何工作的? 我回答: Nacos 服务健康检查机制详解 Nacos 的服务健康检查机制是确保服务高可用性和可靠性的核心功能之一。它通过定期检测服务实例的状态来判断它们是否健康,并据此…...
JavaScript:表单及正则表达式验证
今天我要介绍的是在JavaScript中关于表单验证内容的知识点介绍: 关于表单验证,我接下来则直接将内容以及效果显示出来并作注解,这样可以清晰看见这个表达验证的妙用: <form id"ff" action"https://www.baidu.…...
Android 应用数据分布目录结构解析
在Android系统中,/data目录下的几个关键路径有不同的用途,主要涉及应用数据存储和用户媒体文件管理,具体如下: 1. /data/user/0/ 路径别名:等同于 /data/data/(旧路径,仍兼容)。 用途ÿ…...
Spring Boot 中的自动配置原理
2025/4/6 向全栈工程师迈进! 一、自动配置 所谓的自动配置原理就是遵循约定大约配置的原则,在boot工程程序启动后,起步依赖中的一些bean对象会自动的注入到IOC容器中。 在讲解Spring Boot 中bean对象的管理的时候,我们注入bean对…...
Java内部类详解
在Java中,内部类是一种强大的特性,允许将一个类定义在另一个类的内部。内部类提供了更好的封装性,能够访问外部类的成员,并常用于实现事件监听、适配器模式等场景。本文将深入探讨四种内部类:成员内部类、静态内部类、…...
台账自动统计——餐饮物资管理台账——仙盟共创平台——未来之窗
分类表 自动统计 创作不易,使用地址:https://mp.weixin.qq.com/s/Ok3wuSYAPhd-6N8DrK7jwg 餐饮物资管理台账自动统计能够实时、精准地呈现库存数量。通过对采购入库、领用出库、盘点盈亏等数据的自动记录与计算,管理者随时可获取准确库存信息…...
Function Calling是什么?
Function Calling(函数调用)是大型语言模型(如GPT、Claude等)中的一项关键功能,允许模型根据用户输入的需求,智能识别并返回结构化函数调用请求,从而与外部工具、API或代码进行交互。以下是详细…...
[学习] C语言数据结构深度解析:八种树结构与应用场景详解(代码示例)
C语言数据结构深度解析:八种树结构与应用场景详解 好吧,今天我们来研究树!C语言中的树。 树是计算机科学中最重要的非线性数据结构之一,广泛应用于操作系统、数据库、编译器、图形学等领域。本文将通过C语言代码示例,…...
【从零实现高并发内存池】Page Cache 从理解设计到全面实现
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...
6 CMD 与 PowerShell 指令大全、C 程序终端运行、字符编码切换指南
1 CMD 与 PowerShell 常用指令 在命令行环境中高效运行程序,掌握终端的基本操作命令至关重要。无论是 Windows 系统下的 CMD(命令提示符)还是 PowerShell,它们都配备了一系列实用的命令,助力我们管理文件、执行程序以及…...
为啥mac日历打不开浏览器
问题 换了新电脑后,mac上的日历总是没法同步google日历信息,导致经常错过会议 尝试mac日历上添加账户,结果到了打开浏览器缓解总是卡住,打不开浏览器(safari) 解决 检查默认浏览器设置确保已将所需的浏览…...
spring:注解@PostConstruct、@PreDestroy
这两个注解的功能类似标签中的init-method和destroy-method。分别在构造方法调用之后和实例释放资源之前被调用。 注解类: package com.annotation.dao.impl;import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation…...
Androidjetpack之viewmodel的原理分析
前言 viewmodel是jetpack中比较重要的一个组件。如果还没有学习viewmodel不知道怎么写代码什么的,可以看一下我之前写得文章。 jetpack之ViewModel的简单使用https://blog.csdn.net/i_xiang_la_shi/article/details/147218033?fromshareblogdetail&sharetype…...
springboot启动动态定时任务
1.自定义定时任务线程池 package com.x.devicetcpserver.global.tcp.tcpscheduler;import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotatio…...
Dify智能体平台源码二次开发笔记(7) - 优化知识库pdf识别(2)
目录 前言 设计方案 代码具体优化 前言 补充前篇的一些优化。 场景是识别pdf文档,但还需要把pdf文档中的图片也保存下来,在知识库增强检索的时候,直接可以显示图片。 设计方案 1、保存知识库中的图片 2、存入我们的文件服务器中࿰…...
Linux——进程通信
我们知道,进程具有独立性,各进程之间互不干扰,但我们为什么还要让其联系,建立通信呢?比如:数据传输,资源共享,通知某个事件,或控制某个进程。因此,让进程间建…...
AF3 create_alignment_db_sharded脚本create_shard函数解读
AlphaFold3 create_alignment_db_sharded 脚本在源代码的scripts/alignment_db_scripts文件夹下。 该脚本中的 create_shard 函数的功能是将一部分链(shard_files)中的所有对齐文件写入一个 .db 文件,并返回这些链的索引信息(字节…...
Jetpack Compose 实现主页面与局部页面独立刷新的最佳实践
在 Jetpack Compose 开发中,我们经常遇到这样的需求:主页面包含局部页面,主页面刷新时需要更新局部页面,同时局部页面也需要能独立刷新。本文将介绍几种优雅的实现方案。 核心需求 主页面刷新时能触发局部页面更新局部页面能独立…...
KingbaseES之数据库审计
项目提出要配置数据库审计,来满足分保测评得要求.正好最近做过审计测试,还原下审计配置. 一.开启审计 [kingbaserack1 ~]$ vi /data/data_mysql/kingbase.conf [kingbaserack1 ~]$ sys_ctl -D /data/data_mysql restart grep -r shared_preload_libraries /data/data_mysql/k…...
类的加载过程
1、加载 双亲委派模型(启动类》扩展类》应用类) 2、验证 文件格式验证(Class 文件格式检查)元数据验证(字节码语义检查)字节码验证(程序语义检查)符号引用验证(类的正确…...
小白工具视频转 3GP,多格式转换与数据安全的完美结合,在线使用
在众多在线视频转换工具中,小白工具的视频转 3GP 功能(https://www.xiaobaitool.net/videos/convert-to-3gp/ )凭借其出色的性能和丰富的功能脱颖而出,是进行视频格式转换的优质选择。 一、强大的多格式支持 这款工具支持 MP4、…...
六根觉性:穿透表象的清净觉知之光
在喧嚣的禅堂里,老禅师轻叩茶盏,清脆的声响划破沉寂。这声"叮"不仅震动耳膜,更叩击着修行者的心性——这正是佛教揭示的六根觉性在世间万相中的妙用。当我们凝视《楞严经》中二十五圆通法门,六根觉性犹如六道澄明之光&a…...
Redis的IO多路复用
1 传统的socket编码模型 传统 Socket 模型通常采用 多线程/多进程 或 阻塞 I/O 的方式处理网络请求。以下是典型实现步骤: 创建套接字(Socket) 步骤:调用 socket() 创建一个 TCP/UDP 套接字。通常把这个套接字称为【主动套接字】…...
数据结构和算法(六)--栈队列堆
一、栈 栈(stack)是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈顶(top)。它是后进先出(LIFO)的。对栈的基本操作只有 push(进栈)和 pop(出栈&#…...
js中显示为[object Object]
现象描述: 读取文件并解析数据,遇到变量在使用时异常,通过log输出进行调试,显示为[object,Object]。 分析: [object,Object]表示这是一个对象,其构造函数返回一个对象。 解决方法: 用JSON进行…...
安装matlab R2021b
安装步骤 说明: 以下步骤都是根据R2021b_Windows\Crack_ReadmeWin.txt文件里的内容翻译的。 1)打开安装包根目录,如下: 2)双击R2021b_Windows.iso文件,自动装载进虚拟光驱里,目录入下&…...
Redisson分布式锁深度解析:原理、源码与最佳实践
什么是Redisson分布式锁? 分布式锁是分布式系统中确保资源互斥访问的核心机制,而Redisson作为基于Redis的Java客户端,提供了高效且功能丰富的分布式锁实现。本文将深入剖析Redisson分布式锁的实现原理、核心机制及源码细节,并结合…...
isNaN、Number.isNaN、lodash.isNaN 的区别
isNaN、Number.isNaN、lodash.isNaN 的区别 一、isNaN() 的作用二、什么是 NaN?三、isNaN() 的必要性四、isNaN() 比较1. 全局的isNaN()2. Number.isNaN()3. lodash.isNaN() 五、总结六、附加 一、isNaN() 的作用 检查是否为 NaN 的值,是返回 true&…...
全面解析Flutter中的Stream用法及实际应用
Flutter中的Stream详解 目录 什么是StreamStream的分类Stream的基础用法Stream的常用方法实际应用场景完整示例:计数器应用总结参考文章 1. 什么是Stream 在Flutter开发中,Stream是一种强大的异步数据流处理工具。它类似于广播频道,能够持续推送数据…...
网络请求——微信小程序学习笔记
1. 前言 发起网络请求,即发起HTTPS网络请求 ,注意必须是HTTPS。 2. 使用前注意事项 使用前注意事项可参考官网文档: 基础能力 / 网络 / 使用说明 简单的来说,为了安全,服务器域名必须要备案,如果只是想…...
Oracle19C低版本一天遭遇两BUG(ORA-04031/ORA-600)
昨天帮朋友看一个系统异常卡顿的案例,在这里分享给大家 环境:Exadata X8M 数据库版本19.11 1.系统报错信息 表象为系统卡顿,页面无法刷出,登陆到主机上看到节点1 系统等待存在大量的 cursor: pin S wait on X等待 查看两个节…...
车机系统夏令时设置功能的说明
车机系统夏令时设置功能的说明 基本原理,夏令时,也就daylight saving time。据说古时候,电费比较贵,为了多采用白天自然光照明,通过行政的方式,调节上班时间。使大家能充分使用白天的时间干活,…...
DeepSeek+大数据分析快速应用落地
一、环境准备 1、准备一个 hive 的环境,并可以进行远程连接 2、环境中安装有 sqoop 和 mysql 3、DeepSeek 我使用的是 《问小白》 注册地址:打开问小白,填入我的分享码【1VYXOI】使用满血DeepSeek R1,零延迟、不卡、不限次、不…...
web前端开发:CSS的常用选择器
CSS常用选择器 CSS选择器是用于精准定位HTML元素并对其应用样式的核心工具。它的作用类似于“筛选器”,通过特定规则匹配文档中的元素,从而实现样式控制。 核心作用 定位元素 通过元素名称、类名、ID、属性等条件,快速找到需要样式化的目标元…...
Mathematica 中,将含有小数的表达式转换为整数或分数形式
具体方法和示例: 1. 使用 Rationalize 函数 Rationalize[x] 将小数 x 转换为最接近的有理数(分数形式),可指定精度容忍度。 示例: Rationalize[0.25] (* 输出: 1/4 *) Rationalize[3.14159, 0.001] (* 输出:…...
在 Ubuntu 下通过 Docker 部署 Mastodon 服务器的详细教程
大家好!今天我们来聊聊如何在 Ubuntu 系统上通过 Docker 部署 Mastodon 服务器。Mastodon 是一个开源的社交网络平台,类似于 Twitter,但更注重隐私和去中心化。Docker 则是一个非常流行的容器化平台,能够让我们轻松地打包、分发和…...
JavaScript基础-01(笔记)
前期:js变量 数据类型 数据类型检测 类型转换 数据类型 //// 基本数据类型 存放到栈// a.Number 数字类型(包含整数 小数)var num1var num1.23443var num2222// NaN 非数字类型或者不能转为数字(例:1,"1","1233…...
【C语言基础】C++ 中的 `vector` 及其 C 语言实现详解
一、C 中的 vector:动态数组的核心特性 1. 基本概念 vector 是 C 标准模板库(STL)中的动态数组容器,支持自动扩容、高效元素访问和丰富的操作接口。其核心特性包括: 动态内存管理:自动调整容量࿰…...
记录待办事项的便签软件有没有推荐的?
在快节奏的现代生活中,我们每天都要处理大量的工作任务和生活琐事,稍有不慎就可能遗漏重要事项。你是否经常遇到这样的情况:明明记得有件事要做,却怎么也想不起来是什么;或者手头同时有好几项任务,却不知道…...
华为OD机试真题——硬件产品销售方案(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
2025 A卷 100分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C、C语言、GO六种语言的最佳实现方式! 华为OD机试真题《硬件产品销售方案》: 目录 题目名称࿱…...
鸿蒙应用元服务开发-Account Kit未成年人模式订阅和处理用户信息变更
一、概述 通过订阅用户信息变更,您可以接收有关用户及其账户的重要更新。当用户取消元服务的授权信息、注销华为账号时,华为账号服务器会发送通知到元服务,元服务可以根据通知消息进行自身业务处理。 二、用户信息变更事件介绍 三、订阅用…...
优化 Dockerfile 性能之实践(Practice of Optimizing Dockerfile Performance)
优化 Dockerfile 性能之实践 构建 Docker 镜像时,Dockerfile 的性能会显著影响构建过程的效率。经过优化的 Dockerfile 可以缩短构建时间、最小化镜像大小并提高整体容器性能。在本文中,我们将探讨优化 Dockerfile 性能的最佳实践。 尽量减少层数 影响…...
OpenShift介绍,跟 Kubernetes ,Docker关系
1. OpenShift 简介 OpenShift是一个开源项目,基于主流的容器技术Docker及容器编排引擎Kubernetes构建。可以基于OpenShift构建属于自己的容器云平台。OpenShift的开源社区版本叫OpenShift Origin,现在叫OKD。 OpenShift 项目主页:https://www.okd.io/。OpenShift GitHub仓库…...