LeetCode-738-单调递增的数字

题目描述:

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

给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈 单调递增 。

解题思路:

  1. 先将int变成char\[\],获取数字的长度方便遍历;
  2. 倒着遍历数组,当前一位 > 后一位,就将高位-1,用一个标识flag标记当前位置,flag初始化为数组的长度,标识的作用是用来获取从哪一位开始后面的数字都要变成9;
  3. 返回结果,注意将char\[\] 变为 int需要通过转为String来实现,char\[\] -> String -> int,先new String,再用包装类。
    代码实现
java 复制代码
class Solution {
    public int monotoneIncreasingDigits(int n) {
        char[] str = Integer.toString(n).toCharArray();// int -> String
        int flag = str.length;// 标识,从 flag位开始后面全部为 9
        for (int i = str.length-1; i >0 ; i--) { // 从后往前遍历
            if (str[i-1] > str[i]){// 需要进行高位-1的操作
                str[i-1] -= 1;
                flag = i;
            }
        }
        // 将 flag后面的数字全部变为 9
        for (int j = flag; j < str.length; j++) {
            str[j] = '9';
        }
        // char[] ->String的方法:new String(str)
        return Integer.parseInt(new String(str));
    }
}
相关推荐
饮水桶_T19 小时前
JAVA IO流笔记
开发语言·数据结构·算法
星夜离尘5620 小时前
MATLAB 离散数据分箱:半开区间、末端点与计数、加权和、平均
算法·matlab
Pniubi20 小时前
力扣76.最小覆盖子串
算法·leetcode·职场和发展
地平线开发者20 小时前
征程6|用 hrt\_model\_exec 看清 YOLOv5x 的输入、原始输出和后处理
人工智能·算法
csdn_aspnet21 小时前
C++ 3个有序点的方向(Orientation of 3 ordered points)
c++·算法
赤生云电竞1 天前
GPU算力共享平台架构实践:任务分发与资源隔离的关键配置
算法·架构·gpu算力
青少儿编程课堂1 天前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:折半搜索优化子集枚举(Meet in the Middle)解析
c++·python·算法·bfs·信息学竞赛
Oneshot1 天前
DLX(Dancing Links)算法详解:求解数独最快的算法
算法
文丑颜不良啊1 天前
LeetCode2541~2560题目解析
java·leetcode
青少儿编程课堂1 天前
蓝桥杯青少组图形化 + 全国青少年信息素养大赛 + 电子学会Scratch考级:校园连连看解析
c++·python·算法·bfs·信息学竞赛