leetcode 738单调递增的数字

news/2024/5/5 18:51:21/文章来源:https://blog.csdn.net/qq_44814825/article/details/127219774

单调递增的数字

在这里插入图片描述
找到一个比目标值小的最大递增数列

递归法

从左到右遍历,找符合递增的部分,
当发现不符合的部分,不符合部分都置9
找到符合部分-1的最大递增数(后面都置9要借位)

例:输入668841
发现6688部分符合递增,但是从4开始不符合,因此41变成99
之后找到6688-1的最大递增(后面99要借1)为6679
在和最后两个99合并,得到667999

class Solution {
public:int monotoneIncreasingDigits(int n) {if(n<10) return n;string num = to_string(n);string result ;result += num[0];int flag = 0; //是否符合标志位,当不符合递增的时候,后面都置9for(int i=1 ;i<num.size();i++) //遍历{if(num[i] >= num[i-1] && flag==0) //找到符合递增的部分{result += num[i];}else if(flag==0) //找到第一个不符合递增的数 ,并求之前符合部分-1最大递增{result = to_string(monotoneIncreasingDigits(stoi(result)-1) );flag = 1; //设置为不符合}if(flag == 1) //不符合后面全都置9{result += '9';}}return stoi(result);}
};

贪心法 反向遍历

局部最优:遇到strNum[i - 1] > strNum[i]的情况,让strNum[i - 1]–,然后strNum[i]给为9,可以保证这两位变成最大单调递增整数。

全局最优:得到小于等于N的最大单调递增的整数。

但这里局部最优推出全局最优,还需要其他条件,即遍历顺序,和标记从哪一位开始统一改成9。

那么从后向前遍历,就可以重复利用上次比较得出的结果了,从后向前遍历332的数值变化为:332 -> 329 -> 299

class Solution {
public:int monotoneIncreasingDigits(int n) {if(n<10) return n;string num = to_string(n);int flag;for(int i=num.size()-1 ; i >=1 ;i--){if(num[i] < num[i-1]){flag = i;num[i-1] -= 1;}}for(int i = flag ; i<num.size() ;i++){num[i] = '9';}return stoi(num);}
};

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

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

相关文章

GMSL虚拟通道ID简介

Maxim千兆多媒体串行链路(GMSL) SERDES技术 通过一根电缆在两个端点之间提供高带宽和丰富的点对点互连,其长度可达15米。 SERDES(序列化器/反序列化器)技术广泛应用于传感器和网络通信。 SERDES在同一链路上支持多种协议。 由于其灵活性和性能,汽车工业应用程序严重依赖于…

关于TCP和UDP的联系与区别以及网络字节序和主机字节序的转换函数实践

1. TCP和UDP的相同点: TCP和UDP都是在网络层,都是传输层协议,都能都是保护网络层的传输,双方的通信都需要开放端口。 2.TCP和UDP的不同点: TCP传输协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC793定义。 UDP是Internet协议集支持一个无连接的…

SD-WAN:现代网络的基石

罗马工程构成了现代文明的基石&#xff0c;建造了横跨已知世界的渡槽&#xff0c;连接了各行各业的人民。拱门支撑着这些壮观的结构&#xff0c;但这些宏伟建筑成就的核心是基石。 SD-WAN 是现代网络的基石&#xff0c;为实现一致的服务质量 (QoS)、基于云的集中式网络管理和控…

scrapy爬取网站图片(静态加载)

1.创建一个scrapy项目 scrapy startgproject tupian cd tupian 创建爬虫文件 scrapy genspider Image www.com(域名)后续需要更改 开通pip管道是需要注意,我们将之前的类注释了,所以我们需要将原来的pip管道的名称加以修改 在终端运行就可以获取数据, 运行后会出现错误是…

面试官:Hash 碰撞是什么?如何解决?被问懵了……

Hash如何存数据 hash表的本质其实就是数组,hash表中通常存放的是键值对Entry。 如下图:这里的学号是个key,哈希表就是根据key值来通过哈希函数计算得到一个值,这个值就是下标值,用来确定这个Entry要存放在哈希表中哪个位置。 Hash碰撞 hash碰撞指的是,两个不同的值(比如张…

你真的了解SQL中的EXISTS谓词吗?

EXISTS 谓词的用法 支撑 SQL 和关系数据库的基础理论主要有两个&#xff1a;一个是数学领域的集合论&#xff0c;另一个是作为现代逻辑学标准体系的谓词逻辑&#xff08;predicate logic&#xff09;&#xff0c;准确地说是“一阶谓词逻辑”。EXISTS 是为了实现谓词逻辑中“量…

管理系统权限总结

概念 功能权限和数据权限。 功能权限&#xff1a;用户是否能打开某一个网页&#xff0c;是否能点击编辑按钮等。数据权限&#xff1a;用户可以使用的数据范围。 用户 应用系统的具体操作者&#xff0c;用户可以自己拥有权限信息&#xff0c;可以归属于0&#xff5e;n个角色&…

使用VSCode连接远程服务器

1 效果展示 最近在使用云服务器开项目&#xff0c;发现VSCode的remote插件能远程连接服务器进行开发&#xff0c;这样就非常方便了。效果如下&#xff1a; 可以看到&#xff0c;这样操作&#xff0c;使得云端开发和本地开发几乎没什么不同&#xff0c;如果是云服务器就更方便了…

Vue脚手架报错:‘v-model‘ directives require no argument 解决方案

1、报错&#xff1a; v-model directives require no argument 截图 2、原因&#xff1a; ESLint对vetur进行了eslint检查 3、解决方法 ① 修改模板中使用v-show 将 v-model:show"show" 改为 v-model"show" ② vetur插件的作者给出了解决办法 我们可…

20201306吴龙灿第三章学习笔记

目录Ⅰ知识点归纳1.进程的概念什么是进程?进程的特征动态性并发性独立性异步性结构性程序和进程主要区别2.多任务处理系统(1)背景(2)多任务处理系统代码介绍3.进程同步(1)同步(2)进程唤醒与睡眠无效唤醒A 进程:B 进程:避免无效唤醒A 进程:Linux 内核的例子Ⅱ实践内容与…

docker jenkins升级以及失败处理

一、概述 jenkins是由docker安装的,目前的jenkins版本为2.356。然后jenkins右上角提示版本升级 点击了升级,升级完成后,需要重启一下。 然后就芭比Q了,访问jenkins出现504错误。查看docker日志,提示需要jdk升级到1.8。默认的jenkins的jdk版本为1.7,然后docker就开始一直…

督办管理系统——让企业工作落实到位

开展督查督办工作是企业在经营管理过程中的重要环节和管理手段&#xff0c;是企业办公室系统政务服务的一项重要工作。其具有间接性、权威性、实效性等特点。要加强企业督查督办工作&#xff0c;必须思想认识到位&#xff0c;充分把握督查督办工作原则;制度建设到位&#xff0c…

linux NTP同步时间后比实际时间慢8小时

1. issue ntp同步时间后比实际时间慢8小时 2. analysis 查询系统当前的时区设置 date -R&#xff0c;看到系统是 0000 时区&#xff0c;而中国统一采用北京所在的东8时区&#xff0c;由此造成了8小时的时间偏差。 3. solution 将PC ubuntu /usr/share/zoneinfo/Asia/Shanghai…

Django定义路由_子路由_函数视图

Django定义路由什么是路由&#xff0c;怎么去定义路由&#xff1f;添加路由Path 函数路由定义的痛点处理路由中的动态参数什么是路由&#xff0c;怎么去定义路由&#xff1f; 通常在我们创建项目包中&#xff0c;有个url.py的文件&#xff0c;我们需要去定义路由信息&#xff…

二叉树专项训练LeetCode

144. 二叉树的前序遍历 二叉树入门 递归 与 迭代 class Solution {List<Integer> ans new ArrayList<>();void dfs(TreeNode root){if(root null) {return;}ans.add(root.val);dfs(root.left);dfs(root.right);}public List<Integer> preorderTraversal(T…

【Golang开发面经】蔚来(两轮技术面)

文章目录一面1. channel 缓冲与非缓冲2. mysql引擎3. 索引如何建立&#xff1f;4. linux 如何看进程5. redis 字符串的底层6. 线程池理解7. 线程池的拒绝策略8.悲观锁&#xff0c;乐观锁9. HTTP 各个版本的区别10. HTTP2.0之前怎么实现服务器推送机制&#xff1f;11. websocket…

[操作系统] 启动

启动 一、通电 由于内存是随机存储器&#xff08;Random access memory&#xff0c;RAM&#xff09;&#xff0c;属于易失性存储器&#xff0c;未通电时&#xff0c;RAM中不会有任何内容&#xff0c;因此刚一通电&#xff0c;RAM不可能有任何实际信息。计算机硬件厂商在只读存…

信创浪潮下,看看大公司是如何建立数据安全保护体系的?

信创&#xff0c;即信息技术应用创新产业&#xff0c;它是数据安全、网络安全的基础&#xff0c;也是新基建的重要组成部分。信创涉及到的行业包括IT基础设施&#xff1a;CPU芯片、服务器、存储、交换机、路由器、各种云和相关服务内容&#xff0c;基础软件&#xff1a;数据库、…

1.ROS机器视觉:单目摄像头的调用与标定

(1条消息) ROS改错&#xff1a;vm虚拟机中调用摄像头失败_机械专业的计算机小白的博客-CSDN博客https://blog.csdn.net/wzfafabga/article/details/127204106?spm1001.2014.3001.5502 首先保证摄像头是可调用的。 1.安装usb_cam驱动 sudo apt-get install ros-melodic-usb-…

数据导入导出功能的测试点

【数据导入功能】 一、操作按钮校验 1、导入按钮生效 2、取消导入按钮生效 二、导入模板校验 1、文件数量 1&#xff09;不传模板&#xff1a;点确认时提示错误 2&#xff09;传模板&#xff1a;只支持单文件 or 还支持多文件同时导入 2、文件格式 只支持xlsx文件 or 还支…