leetcode贪心(单调递增的数字、监控二叉树)

738.单调递增的数字

给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。

(当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。)

示例 1:

输入: N = 10
输出: 9
示例 2:

输入: N = 1234
输出: 1234
示例 3:

输入: N = 332
输出: 299
说明: N 是在 [0, 10^9] 范围内的一个整数。

class Solution:def monotoneIncreasingDigits(self, N: int) -> int:# 将整数转换为字符串strNum = str(N)# flag用来标记赋值9从哪里开始# 设置为字符串长度,为了防止第二个for循环在flag没有被赋值的情况下执行flag = len(strNum)# 从右往左遍历字符串for i in range(len(strNum) - 1, 0, -1):# 如果当前字符比前一个字符小,说明需要修改前一个字符if strNum[i - 1] > strNum[i]:flag = i  # 更新flag的值,记录需要修改的位置# 将前一个字符减1,以保证递增性质strNum = strNum[:i - 1] + str(int(strNum[i - 1]) - 1) + strNum[i:]# 将flag位置及之后的字符都修改为9,以保证最大的递增数字for i in range(flag, len(strNum)):strNum = strNum[:i] + '9' + strNum[i + 1:]# 将最终的字符串转换回整数并返回return int(strNum)

968.监控二叉树

力扣题目链接(opens new window)

给定一个二叉树,我们在树的节点上安装摄像头。

节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。

计算监控树的所有节点所需的最小摄像头数量。

示例 1:
在这里插入图片描述

输入:[0,0,null,0,0]
输出:1
解释:如图所示,一台摄像头足以监控所有节点。
示例 2:

在这里插入图片描述

输入:[0,0,null,0,null,0,null,null,0]
输出:2
解释:需要至少两个摄像头来监视树的所有节点。 上图显示了摄像头放置的有效位置之一。
提示:

给定树的节点数的范围是 [1, 1000]。
每个节点的值都是 0。

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/597902.shtml

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

相关文章

Oracle导出CSV文件

利用spool spool基本格式&#xff1a; spool 路径文件名 select col1||,||col2||,||col3||,||col4 from tablename; spool off spool常用的设置&#xff1a; set colsep ;    //域输出分隔符 set echo off;    //显示start启动的脚本中的每个sql命令&#xff0c;缺…

Jvm之垃圾收集器(个人见解仅供参考)

问&#xff1a;什么是垃圾收集算法中的分代收集理论&#xff1f; 答&#xff1a;分代收集理论是垃圾收集算法的一种思想&#xff0c;根据对象存活周期的不同将内存分为几块&#xff0c;一般将java堆分为新生代和老年代。这种理论使得我们可以根据各个年代的特点选择合适的垃圾收…

14.9-时序和组合的混合逻辑——使用非阻塞赋值

时序和组合的混合逻辑——使用非阻塞赋值 1&#xff0c;在一个always块中同时实现组合逻辑和时序逻辑2&#xff0c;将组合和时序逻辑分别写入两个always块中 原则4&#xff1a;在同一个always块中描述时序和组合逻辑混合电路时&#xff0c;用非阻塞赋值。 1&#xff0c;在一个…

Python 可视化 web 神器 streamlit

官网&#xff1a;https://streamlit.io/ github&#xff1a;https://github.com/streamlit/streamlit API 参考&#xff1a;https://docs.streamlit.io/library/api-reference 1、streamlit 简介 streamlit 简介 Streamlit 是Python可视化 web 神器 &#xff0c;是一个开箱即…

Nginx(十六) 配置文件详解 - server stream服务流

本篇文章主要讲 ngx_stream_core_module 模块下各指令的使用方法&#xff0c;Nginx默认未配置该模块&#xff0c;需要用“--with-stream”配置参数重新编译Nginx。 worker_processes auto;error_log /var/log/nginx/error.log info;events {worker_connections 1024; }stream…

宇宙最快最高级且开源的密码破解利器 —— Hashcat

目录 一. 前言 二. Hashcat 安装 2.1. Hashcat 官网下载 2.2. hash 类型识别工具 HashIdentifier 2.3. John The Ripper 三. Hashcat 全部参数 3.1. Hashcat 的攻击模式&#xff08;-a 参数&#xff09; 3.2. 输出格式&#xff08;--outfile-format 参数&#xff09; …

【算法专题】回溯算法

回溯 回溯算法1. 全排列2. 子集3. 找出所有子集的异或总和再求和4. 全排列Ⅱ5. 电话号码的字母组合6. 括号生成7. 组合8. 目标和9. 组合总和10. 字母大小写全排列11. 优美的排列12. N皇后13. 有效的数独14. 解数独15. 单词搜索16. 黄金矿工17. 不同路径III 回溯算法 什么是回溯…

Unity 使用 Plastic 同步后,正常工程出现错误

class Newtonsoft.Json.Linq.JToken e CS0433:类型"JToken"同时存在于"Newtonsoft.Json.Net20,Version3.5.0.0,Cultureneutral,,PublicKeyToken30ad4fe6b2a6aeed"和"Newtonsoft.Json, Version12.0.0.0,Cultureneutral,PublicKeyToken30ad4fe6b2a6aeed…

Rust-使用Serde对json数据进行反序列化

引言 JSON作为目前流行的数据格式之一&#xff0c;被大家广泛使用。在日常的开发实践中&#xff0c;将JSON数据反序列化为对应的类型具有以下几个重要的意义&#xff1a; 1. 访问和操作数据 将JSON数据反序列化为对应的类型&#xff0c;可以更方便地访问和操作数据&#xff0c…

初始Java

目录 前言&#xff1a; 配置环境变量&#xff1a; Java程序的执行&#xff1a; JDK、JRE、JVM之间的关系&#xff1a; 一些概念&#xff1a; 基础语法&#xff1a; main方法&#xff1a; 快捷方法&#xff1a; 注释方法&#xff1a; 符号&#xff1a; 编码格式&am…

打包与解包:Go 中 archive 库的实战应用

打包与解包&#xff1a;Go 中 archive 库的实战应用 引言archive 库概览支持的文件格式archive 库与其他 Go 标准库的协同 使用 archive/tar 打包与解包打包文件到 Tar 归档从 Tar 归档解包文件 使用 archive/zip 进行压缩与解压缩创建 Zip 压缩文件从 Zip 归档解压文件 总结与…

C++ 具名要求-基本概念-指定该对象可以析构

此页面中列出的具名要求&#xff0c;是 C 标准的规范性文本中使用的具名要求&#xff0c;用于定义标准库的期待。 某些具名要求在 C20 中正在以概念语言特性进行形式化。在那之前&#xff0c;确保以满足这些要求的模板实参实例化标准库模板是程序员的重担。若不这么做&#xf…

PythonStudio=vb7国人写的python可视化窗体设计器IDE,可以替代pyqt designer等设计器了

【免费】PythonStudio-1.1.5-x86最新版国人开发的python界面ide&#xff0c;可以制作窗体资源-CSDN文库https://download.csdn.net/download/xiaoyao961/88688447 【免费】PythonStudio-1.1.5-x64-Setup.exe国人开发的python界面ide&#xff0c;可以制作窗体资源-CSDN文库https…

SysML:系统建模语言在复杂系统设计中的应用

一、引言 SysML&#xff0c;即系统建模语言&#xff0c;是一种用于描述和分析复杂系统的标准化建模方法。它的发展起源于对软件开发过程中需求的不断演变和复杂化的认识。SysML的重要性在于它提供了一种统一的建模语言&#xff0c;能够有效地捕捉和表达系统的不同方面&#xf…

VM中安装Linux以及Win系统

目录 准备条件 安装RHEL9.3 步骤一&#xff1a;按照图片进行操作 步骤二&#xff1a;选择配置方式 步骤三&#xff1a;选择虚拟芯片 步骤四&#xff1a;安装镜像 步骤五&#xff1a;选择操作系统 步骤六&#xff1a;名字以及存储位置 步骤七&#xff1a;配置虚拟机参数…

Unity获取相机渲染范围内的所有物体

1.获取所有相机渲染的物体&#xff08;包括子物体&#xff09;。 using System.Collections.Generic; using UnityEngine;public class RenderedObjects : MonoBehaviour {public Camera camera;private void Start(){if (camera null){camera Camera.main;}}private void …

js object 去重

测试&#xff1a;数据 let arr [ { a: 1, b: 2 }, { b: 3, a: 4 }, { b: 2, a: 1 } ] 结果 function unique(arr) {const newArr [...arr]for (let i 0; i < newArr.length; i) {for (let j i 1; j < newArr.length; j) {if (this.duibi(newArr[i], newArr[j])) {ne…

帕金森病是否存在性别差异?

帕金森病是否存在性别差异是一个值得探讨的问题。从现有的研究和临床观察来看&#xff0c;帕金森病对男性和女性在某些方面确实存在差异。 首先&#xff0c;从发病率上看&#xff0c;帕金森病对男性的影响是女性的两倍。这意味着在相同的时间和地域背景下&#xff0c;男性患上…

秋招复习之栈与队列

前言 1 栈 「栈 stack」是一种遵循先入后出逻辑的线性数据结构。 我们可以将栈类比为桌面上的一摞盘子&#xff0c;如果想取出底部的盘子&#xff0c;则需要先将上面的盘子依次移走。我们将盘子替换为各种类型的元素&#xff08;如整数、字符、对象等&#xff09;&#xff0c…

LLM、AGI、多模态AI 篇三:微调模型

文章目录 系列LLM的几个应用层次Lora技术指令设计构建高质量的数据微调步骤系列 LLM、AGI、多模态AI 篇一:开源大语言模型简记 LLM、AGI、多模态AI 篇二:Prompt编写技巧 LLM、AGI、多模态AI 篇三:微调模型 LLM的几个应用层次 AI 端到端应用。是直接面向最终用户的应用程序…