贪心算法解决单调递增数字问题

代码随想录链接:代码随想录

思路:

定义一个变量flag,表示需要将之后的数字全部变成9的位置

从后遍历数字中的每一位,如果遍历到第i位数字时它的前一位数字比它大(严格大于),令它前一位数字减1,同时令flag=i

遍历结束后,令该数字的第flag位及其之后的全部数字都变成9

最后返回最终的数字即可

代码:

java 复制代码
class Solution {
    public int monotoneIncreasingDigits(int N) {
        String[] strings = (N + "").split("");
        int start = strings.length;
        for (int i = strings.length - 1; i > 0; i--) {
            if (Integer.parseInt(strings[i]) < Integer.parseInt(strings[i - 1])) {
                strings[i - 1] = (Integer.parseInt(strings[i - 1]) - 1) + "";
                start = i;
            }
        }
        for (int i = start; i < strings.length; i++) {
            strings[i] = "9";
        }
        return Integer.parseInt(String.join("",strings));
    }
}
相关推荐
样例过了就是过了26 分钟前
LeetCode热题100 最大子数组和
数据结构·算法·leetcode
铸人36 分钟前
再论自然数全加和 - 欧拉伽马常数
数学·算法·数论·复数
m0_531237171 小时前
C语言-变量,枚举常量,字符串,打印类型,转义字符
c语言·数据结构·算法
zyeyeye1 小时前
自定义类型:结构体
c语言·开发语言·数据结构·c++·算法
俩娃妈教编程1 小时前
2023 年 03 月 二级真题(1)--画三角形
c++·算法·双层循环
niuniudengdeng2 小时前
一种基于高维物理张量与XRF实景复刻的一步闭式解工业级3D打印品生成模型
人工智能·python·数学·算法·3d
哈库纳玛塔塔2 小时前
公元前日期处理的两种方案
数据库·算法·mybatis
铸人2 小时前
再论自然数全加和 - 欧拉伽马常数6
算法
json{shen:"jing"}2 小时前
分割回文串-暴力法
java·算法
niuniudengdeng2 小时前
基于调度驱动与内存主动数据供给的非冯·诺依曼智能架构
算法