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));
    }
}
相关推荐
.5481 分钟前
Two Pointers(双指针)
java·数据结构·算法
sali-tec3 分钟前
C# 基于OpenCv的视觉工作流-章58-相机标定
图像处理·人工智能·数码相机·opencv·算法·计算机视觉
承渊政道3 分钟前
【动态规划算法】(回文串问题解题框架与经典案例)
数据结构·c++·学习·算法·leetcode·动态规划·哈希算法
一水鉴天4 分钟前
同构异质三表总装体系确立与入表机制闭环验证 20260502(腾讯元宝)
人工智能·算法·机器学习
qyzm12 分钟前
Codeforces Round 1073 (Div. 2)
数据结构·python·算法
深邃-2 小时前
【数据结构与算法】-二叉树(2):实现顺序结构二叉树(堆的实现),向上调整算法,向下调整算法,堆排序,TOP-K问题
数据结构·算法·二叉树·排序算法·堆排序··top-k
We་ct5 小时前
LeetCode 5. 最长回文子串:DP + 中心扩展
前端·javascript·算法·leetcode·typescript
王老师青少年编程9 小时前
csp信奥赛C++高频考点专项训练之贪心算法 --【哈夫曼贪心】:合并果子
c++·算法·贪心·csp·信奥赛·哈夫曼贪心·合并果子
叼烟扛炮10 小时前
C++第二讲:类和对象(上)
数据结构·c++·算法·类和对象·struct·实例化
天疆说10 小时前
【哈密顿力学】深入解读航天器交会最优控制中的Hamilton函数
人工智能·算法·机器学习