day 1: 738. 单调递增的数字

738. 单调递增的数字

当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。
给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈 单调递增 。

示例1
输入:n = 10
输出:9
示例2
输入:n = 1234
输出:1234

为了便于修改值,将其转化为数组。

List<Integer> nums = new ArrayList<Integer>();
while (n > 0) {nums.add(0, n % 10);n /= 10;
}

从高位到低位单调递增,从 0 开始判断,是否是递增的,当判断第 i 位小于第 i - 1位时,将从第 i 位到最后一位修改为 9,并将第 i - 1 位减 1。
此时,第 i - 1 位减 1 后,可能会破坏前面 0 ~ i - 1 的递增,需要往前进行处理,从 i - 1 开始往前遍历,如果第 j 位大于等于第 j - 1 位,就不用继续往前判断了,前面一定是符合的,如果小于,就将第 j 位修改为 9,并将第 j - 1 位减一,减一就需要继续判断前面的递增。

for (int i = 1; i < nums.size(); i++) {if (nums.get(i) < nums.get(i - 1)) {// 往后变为 9for (int j = i; j < nums.size(); j++) {nums.set(j, 9);}// 往前检查nums.set(i - 1, nums.get(i- 1) - 1);for (int j = i - 1; j > 0; j--) {if (nums.get(j) >= nums.get(j - 1)) {break;}nums.set(j, 9);nums.set(j - 1, nums.get(j - 1) - 1);}break;}
}

最后将数组转换为数字输出。

int res = 0;
for (Integer num : nums) {res = res * 10 + num;
}

完整代码

class Solution {public int monotoneIncreasingDigits(int n) {List<Integer> nums = new ArrayList<Integer>();while (n > 0) {nums.add(0, n % 10);n /= 10;}for (int i = 1; i < nums.size(); i++) {if (nums.get(i) < nums.get(i - 1)) {// 往后变为 9for (int j = i; j < nums.size(); j++) {nums.set(j, 9);}// 往前检查nums.set(i - 1, nums.get(i- 1) - 1);for (int j = i - 1; j > 0; j--) {if (nums.get(j) >= nums.get(j - 1)) {break;}nums.set(j, 9);nums.set(j - 1, nums.get(j - 1) - 1);}break;}}int res = 0;for (Integer num : nums) {res = res * 10 + num;}return res;}
}

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

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

相关文章

图数据库助力供应链柔性升级

导读 当今市场环境受短视频等流媒体影响&#xff0c;任何风险事件在社交网络中传播速度极其迅速&#xff0c;留给企业的反应时间按分秒计&#xff0c;传统供应链的年度计划面对剧烈变化的市场环境已失去意义。此外&#xff0c;受近年局势动荡的影响&#xff0c;市场需求和供应…

APISIX-简单使用

APISIX-简单使用 这个工具还是很不错的&#xff0c;可视化的配置很清晰 &#xff0c; 想用NGINX的配置模式也是可以的&#xff0c;就是要去修改配置文件了。 APISIX&#xff0c;一个很不错的可视化工具&#xff0c;用来代替Nginx相当不错&#xff0c;可作为Nginx的平替方案&…

【Python进阶】主流电商平台数据分析||数据采集返回商品详情主题链接主图SKU数据

Python是一种高级编程语言&#xff0c;广泛应用于软件开发、数据分析、人工智能、科学计算等领域。在软件开发方面&#xff0c;Python在网站开发、网络编程、桌面软件开发等方面有着广泛的应用。在数据分析和人工智能领域&#xff0c;Python的各种库如NumPy、Pandas、Matplotli…

守护者:ThingsBoard物联网网关在温室环境监测中的应用

系统设计 智慧农业温室大棚系统由传感器及执行设备、数据传输网关、智慧农业温室大棚管理平台组成。 系统支持实时采集温室大棚内的空气温湿度、土壤温湿度、光照和二氧化碳等环境参数&#xff0c;根据农作物的生长需求自动控制温室中电器设备的启停&#xff0c;从而达到植物生…

中移物联OneMO Cat.1模组推动联网POS规模应用

在第三方支付蓬勃发展和消费模式不断革新的时代背景下&#xff0c;新型联网POS终端以其智能化、便捷化的特点丰富人们生活便利度。在这一变革浪潮中&#xff0c;中移物联OneMO Cat.1模组ML307R凭借其卓越的性能和成本效益&#xff0c;成为推动联网POS规模应用的重要力量。 性能…

DHCP 动态分配概述

DHCP 动态分配概述 DHCP&#xff08;Dynamic Host Configuration Protocol&#xff0c;动态主机配置协议&#xff09;是一种网络协议&#xff0c;用于自动分配IP地址和其他网络配置参数&#xff08;如子网掩码、默认网关、DNS服务器&#xff09;给网络中的设备。这简化了网络管…

【Linux】信号集及信号集操作函数

文章目录 一、信号集是什么&#xff1f;二、信号集操作函数1. sigemptyset2. sigfillset3. sigaddset4. sigdelset5. sigismember6. sigprocmask (仅用于读取或更改block表)7. sigpending (仅用于读取pending表) 一、信号集是什么&#xff1f; 对于每个进程, 都有三个信号集, …

k8s集群部署成功后某个节点突然出现notready状态解决办法

通过&#xff1a; kubectl get nodes 查看master1节点为not ready 通过查看日志&#xff1a; journalctl -f -u kubelet.service 看到这里 查看状态&#xff1a; systemctl status kubelet.service 重启一样会报错 执行&#xff1a; swapoff -a 执行后&#xff0c;重启…

pytorch深度学习-环境搭建

1.Anaconda下载&#xff08;首先安装Anaconda不需要先安装Python了&#xff01;&#xff09; 版本 3.11. Download Anaconda Distribution | Anaconda 1.2 跳过注册直接下载 2.安装 直接next, (Install for 可以选择All Users&#xff0c;我选择的是All Users) 点击默认选项…

Qt Designer 使用笔记

目录 qt designer安装 预览 Ctrl R 使用 Qt Designer 设计的ui文件可以通过以下命令转为.py文件 命令行脚本&#xff1a; pycharm工具栏配置&#xff1b; pyqt5也是可以的&#xff1a; 2.2 测试是否配置成功 设置背景颜色&#xff1a; ui收集 qt designer安装 pip ins…

高耗能工厂实现ESG能源管控的策略与实践探讨-天拓四方

随着全球气候变化的加剧和ESG&#xff08;环境、社会和治理&#xff09;理念的普及&#xff0c;高耗能工厂面临着巨大的挑战和机遇。如何有效地实现ESG能源管控&#xff0c;不仅关乎企业的可持续发展&#xff0c;也是应对全球环境问题的关键一环。本文将探讨高耗能工厂实现ESG能…

JavaEE-网络初识

文章目录 一、网络背景1.1 起源1.2 国内网络的发展 二、关键概念2.1 网络2.2 设备2.3 ip地址与端口号 三、协议3.1 协议分层3.2 OSI七层模型3.3 TCP/IP五层模型3.4 数据传输过程的简单叙述 一、网络背景 1.1 起源 在国外大概时上世纪70年代左右&#xff0c;网络就出现了&…

U-Mail邮件系统取得多项适配认证,全面支持国产化信创环境

随着信息技术的发展&#xff0c;信息化建设越来越深入到社会各个领域&#xff0c;成为驱动经济社会发展的重要力量。在此背景下&#xff0c;我国正加快构建国家信息安全保障体系&#xff0c;实现自主可控&#xff0c;形成安全可靠的信息技术体系。这正是我们所说的“信创”&…

Linux中经典的并发编程问题生产者和消费者

一&#xff0c;进程和线程区别 1&#xff0c;进程是程序的一次执行实例&#xff0c;是系统进行资源分配和调度的独立单位。进程具有独立的内存空间、系统资源以及独立的执行序列。每个进程都有其独立的进程控制块&#xff08;PCB&#xff09;&#xff0c;用于描述进程的状态和…

Flutter 中的 TabBarView 小部件:全面指南

Flutter 中的 TabBarView 小部件&#xff1a;全面指南 在Flutter中&#xff0c;TabBarView是一个用于创建选项卡式界面的小部件&#xff0c;它与TabController一起使用&#xff0c;可以构建复杂的选项卡导航界面。本文将为您提供一个全面的指南&#xff0c;帮助您了解如何使用…

ssl证书价格一年多少钱?怎么申请?

随着各大平台下架了一年期免费证书&#xff0c;免费证书的有效期都为90天。更多企业选择付费证书。费用是众多用户关心的话题&#xff0c;一年期SSL证书价格在几十到几千元不等。 一年期SSL证书价格查看https://www.joyssl.com/certificate/select/0-1000.html?nid16 下面是…

如何官方查询论文分区,中科院及JCR

中科院分区 有一个小程序&#xff1a;中科院文献情报中心分区表 点2023升级版&#xff0c;输入期刊名 大类1区 JCR分区 进入官方网站 Journal Citation Reports 输入要查询的期刊名&#xff0c;点开 拼命往下拉 这就是根据影响因子的排名&#xff0c;在computer science&am…

农业场景下的slam论文汇总

文章目录 概述2020Ground-Level Mapping and Navigating for Agriculture Based on IoT and Computer VisionCanopy Density Estimation in Perennial Horticulture Crops Using 3D Spinning Lidar SLAM 2021Mobile 3D scan LiDAR: a literature reviewSLAM in the Field: An E…

华为欧拉 openEuler 22.03 LTS SP3 一键安装 Oracle 21C RAC

前言 Oracle 一键安装脚本&#xff0c;演示 openEuler 22.03 LTS SP3 一键安装 Oracle 21C RAC 过程&#xff08;全程无需人工干预&#xff09;。 ⭐️ 脚本下载地址&#xff1a;Shell脚本安装Oracle数据库 安装准备 1、安装好操作系统&#xff0c;建议安装图形化2、配置好网…

git版本回退

代码推送到远程仓库之后想回退并且不保留任何历史记录&#xff1a; 查看版本号信息git log&#xff1a; git log commit version_example1 (HEAD -> dev, origin/dev, origin/HEAD) Author: xxx <email> Date: xxxXXX注释commit version_example2 Author: xxx <…