代码随想录训练营Day28:贪心算法06

1.738单调递增的数字

贪心策略:如果strNum[i]<strNum[i-1]那么strNum[i] = '9',strNum[i-1]--;//比如87对应的最大的单调递增的就是79.

具体实现:

  1. 对于遇到小于的情况:如果strNum[i]<strNum[i-1]那么strNum[i] = '9',strNum[i-1]--;
  2. 遍历顺序必须得是一个反向遍历,这样才能保证找到最高位数需要进行改变的地方。(如果从左往右进行便利的话,会出现一种这样的情况,例如N = 999998前面的都相等,那么需要改变的是最右侧那个位置,明显不符合,所以要从右往左进行遍历)
  3. 使用flag来确定需要变成9的最左侧的位置
class Solution {
public:int monotoneIncreasingDigits(int N) {string strNum = to_string(N);// flag用来标记赋值9从哪里开始// 设置为这个默认值,为了防止第二个for循环在flag没有被赋值的情况下执行int flag = strNum.size();for (int i = strNum.size() - 1; i > 0; i--) {if (strNum[i - 1] > strNum[i] ) {flag = i;strNum[i - 1]--;}}for (int i = flag; i < strNum.size(); i++) {strNum[i] = '9';}return stoi(strNum);}
};

2.968监控二叉树

贪心策略:一个摄像头能够监控到更多的节点。

具体实现:

  • 首先要确定的就是遍历顺序,是自顶向下还是自底向上的遍历顺序如果是自顶向下的话,那么就是判断父节点是否被覆盖,此时需要设置的节点就是:2,3,8,9,10,11,12,13,14,15.如果是自底向上的情况那么就是判断左右孩子节点是否被覆盖,此时需要设置的节点就是:4,5,6,7,1.所以确定的遍历顺序就是自底向上的情况。
  • 再确定就是状态:分为三种状态:0:未被覆盖,1:存放摄像头,2:被覆盖三种状态。
  • 对于空节点的处理:如果空节点的状态为0,那么叶子结点就需要设置为存放摄像头的,明显是不符合的,当空节点的状态为2的时候,此时叶子结点就不需要设置摄像头了,只需要在叶子结点的上方设置摄像头即可,所以空节点设置为2.
  • 当前节点为2(被覆盖):左右孩子中至少有一个是1(设置为节点),且左右孩子不能为0。
  • 当前节点为1(设置摄像头):左右孩子中至少有一个为0(未被覆盖)。
  • 当前节点为0(为被覆盖):左右孩子全都是2(被覆盖状态)。
  • 对于最后根节点的处理:因为会出现一种情况就是如果23全都是被覆盖,那么设置的1就是为未覆盖状态(0)退出,但是不符合实际,此时需要将其变成设置摄像头(2),所以最后还需要在主函数里面判断返回值是否为0。

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public://节点分三种情况://0:没覆盖;1:该节点存放摄像头;2:该节点被覆盖//当节点为空的时候设置为被覆盖int result;int traversal(TreeNode* cur){if(cur == nullptr) return 2;int left = traversal(cur->left);int right = traversal(cur->right);//该节点为设置为没覆盖:左右节点都被覆盖if(left == 2&&right == 2)return 0;//该节点设置为监控if(left == 0||right == 0){result++;return 1;}//该节点设置为被覆盖//1.left =1,right =1;if(left == 1||right ==1){return 2;}return -1;//代表的知识一个完整性}int minCameraCover(TreeNode* root) {result = 0;if(traversal(root) == 0){//对于最后一个根节点的处理,如果此时设置为0,代表未被覆盖,需要重新设置为1,即result++;result++;}return result;}
};

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

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

相关文章

linux phpstudy 重启命令

[rootLinuxWeb phpstudy]# ./system/phpstudyctl restart 查看命令 1) phpstudy -start 启动小皮面板 2) phpstudy -stop 停止小皮面板 3) phpstudy -restart 重启小皮面板 4) phpstudy -status 查询面板状态 5) phpstudy -in…

OFDM802.11a的FPGA实现(十五)短训练序列:STS(含Matlab和verilog代码)

原文链接&#xff08;相关文章合集&#xff09;&#xff1a;OFDM 802.11a的xilinx FPGA实现 1.前言 在之前已经完成了data域数据的处理&#xff0c;在构建整个802.11a OFDM数据帧的时候&#xff0c;还剩下前导码和signal域的数据帧&#xff0c;这两部分的内容。 PLCP的前导部分…

Nodejs笔记2

模块化 模块化初体验 模块暴露数据 导入模块 fs 写绝对路径 require写相对路径不会受到影响 ./../不能省略 js 和json文件后缀可以省略 如果存在 命名相同的js和json文件&#xff0c;优先导入js文件 导入文件夹时的情况 require导入模块的基本流程 commonJS模块…

其它高阶数据结构①_并查集(概念+代码+两道OJ)

目录 1. 并查集的概念 2. 并查集的实现 3. 并查集的应用 3.1 力扣LCR 116. 省份数量 解析代码1 解析代码2 3.2 力扣990. 等式方程的可满足性 解析代码 本篇完。 写在前面&#xff1a; 此高阶数据结构系列&#xff0c;虽然放在⑤数据结构与算法专栏&#xff0c;但还是作…

【数据可视化01】matplotlib实例介绍4之六边形分箱图

目录 一、引言二、实例介绍 一、引言 hexbin是一个二维直方图&#xff0c;其中箱子是六边形&#xff0c;颜色表示每个箱子内的数据点数。 二、实例介绍 import matplotlib.pyplot as plt import numpy as np# Fixing random state for reproducibility np.random.seed(19680…

服务器利用率的神器脚本

在服务器管理的过程中&#xff0c;了解服务器的各项性能指标是至关重要的。无论是CPU的负载情况&#xff0c;内存使用情况&#xff0c;还是硬盘的存储空间以及TCP连接状态&#xff0c;这些都是我们判断服务器健康状态和性能的重要依据。然而&#xff0c;手动一项项去检查这些指…

【MySQL】Mysql——安装指南(Linux)

MySQL8.0.26-Linux版安装 1. 准备一台Linux服务器 云服务器或者虚拟机都可以; Linux的版本为 CentOS7; 2. 下载Linux版MySQL安装包 3. 上传MySQL安装包 4. 创建目录,并解压 mkdir mysqltar -xvf mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar -C mysql5. 安装mysql的安装包 …

pip镜像源

1.1 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple 1.2 阿里云 https://mirrors.aliyun.com/pypi/simple/ 1.3 网易 https://mirrors.163.com/pypi/simple/ 1.4 豆瓣 https://pypi.douban.com/simple/ 1.5 百度云 https://mirror.baidu.com/pypi/simple/ 1.6 中科大 ht…

uniapp vue 获取天气数据

获取当前地址&#xff0c;通过高德天气数据&#xff0c;来展示天气温度风度等数据 //获取天气 getWeather(){// 获取天气预报uni.request({url: https://restapi.amap.com/v3/weather/weatherInfo, data: {city: 长沙,// extensions:all,key: xxxxxxxxxx//自己的高德密钥key},…

2024OD机试卷-转盘寿司 (java\python\c++)

题目:转盘寿司 题目描述 寿司店周年庆,正在举办 优惠活动 回馈新老客户。 寿司转盘上总共有 n 盘寿司,prices[i] 是第 i 盘寿司的价格, 如果客户选择了第 i 盘寿司,寿司店免费赠送客户距离第 i 盘寿司最近的下一盘寿司 j,前提是 prices[j] < prices[i],如果没有满足…

RAG 面向 LLM: 基于检索增强的大语言模型调研

摘要 作为 AI 领域最先进的技术之一,检索增强生成(RAG)技术可以提供可靠和最新的外部知识,为众多任务提供巨大的便利。特别是在 AI 生成内容(AIGC)时代,RAG 中检索强大的提供额外知识的能力使得检索增强生成能够辅助现有生成式 AI 生产高质量输出。最近,大语言模型(LLM)在语言…

Zoho CRM企业成长的智能引擎,智能化销售自动化

数字化时代&#xff0c;客户体验已成为企业竞争的核心要素。卓豪Zoho CRM&#xff0c;作为全球领先的SaaS云端客户关系管理平台&#xff0c;正引领着一场企业运营模式的变革&#xff0c;助力超过25万家企业跨越180多个国家&#xff0c;实现客户互动与业务增长的无缝对接。让我们…

广汽原车控制系统CAN协议控制汽车基本信息获取及数据应用

在现代汽车工业的迅速发展中&#xff0c;车辆控制系统的智能化和网络化已成为提升汽车性能的关键。广汽作为中国汽车行业的佼佼者&#xff0c;其在原车通信网络方面也取得了显著的成就。特别是广汽原车CAN&#xff08;Controller Area Network&#xff09;协议的应用&#xff0…

2024OD机试卷-分割均衡字符串 (java\python\c++)

题目:分割均衡字符串 题目描述 均衡串定义: 字符串 中只包含两种字符,且这两种字符的个数相同。 给定一个均衡字符串,请给出可分割成新的均衡子串的最大个数。 约定:字符串中只包含大写的 X 和 Y 两种字符。 输入描述 字符串的长度:[2, 10000]。 给定的字符串均为均…

添砖Java之路(其六)——通过集合制作的学生信息管理系统

目录 前言&#xff1a; 源码&#xff1a; 前言&#xff1a; 我对于集合的理解&#xff0c;感觉就类似于顺序表这样的数据结构&#xff0c;然后他存储的数据不能是基本类型&#xff0c;如果要用也只能用对应基本数据的包装类。 对于集合有很多方法&#xff0c;我的建议就是去…

【运维】nvidia-smi错误信息:Failed to initialize NVML: Driver/library version mismatch

【运维】错误信息&#xff1a;Failed to initialize NVML: Driver/library version mismatch 是因为Nvidia的驱动冲突的原因 本地部署&#xff1a;本地Docker容器部署&#xff0c;本地验证后打包镜像 远程部署&#xff1a;镜像部署阿里云PAI EAS 因为在容器中安装了驱动版本&a…

短视频最后的慢动作怎么做:成都鼎茂宏升文化传媒公司

短视频最后的慢动作怎么做&#xff1a;技巧与创意实践指南 在短视频创作的浩瀚宇宙中&#xff0c;慢动作特效如同一颗璀璨的星辰&#xff0c;为作品增添无限魅力与情感深度。它不仅能够放大细节之美&#xff0c;还能延长关键瞬间&#xff0c;引发观众强烈的情感共鸣。短视频最…

SpringBoot项目的项目部署全过程

一、前端 安装nginx 1.将提前准备好的nginx的安装包上传到Linux中/opt目录下(我用的是Xftp) 2.解压 2.1:在xshell中解压该文件: tar -zxvf nginx-1.20.1.tar.gz 2.2:进入解压后的目录 cd nginx-1.20.1/ 2.3:安装需要的依赖 yum -y install zlib zlib-devel openssl openssl-de…

html特殊字符的html,js,css写法汇总

⇠ 箭头类 符号UNICODE符号UNICODEHTMLJSCSSHTMLJSCSS⇠&#8672\u21E0\21E0⇢&#8674\u21E2\21E2⇡&#8673\u21E1\21E1⇣&#8675\u21E3\21E3↞&#8606\u219E\219E↠&#8608\u21A0\21A0↟&#8607\u219F\219F↡&#8609\u21A1\21A1←&#8592\u2190\2…

FreeRTOS【4】线程挂起和恢复

1.开发背景 基于上一篇指引&#xff0c;成功创建并启动线程后&#xff0c;线程已经开始运行了&#xff0c;但是有时我们需要线程暂停运行&#xff0c;例如某个线程是控制 LED 闪灯的&#xff0c;如果现在需要让 LED 停止工作&#xff0c;单纯的关闭 LED 是没用的&#xff0c;因…