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

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

思路:

定义一个变量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));
    }
}
相关推荐
来一碗刘肉面6 小时前
C++中的引用语法
c++·算法
Black蜡笔小新7 小时前
自动化AI算法训练服务器DLTM零代码私有化赋能智慧农业用AI智能视觉守护万亩良田
人工智能·算法·自动化
Tisfy7 小时前
LeetCode 1288.删除被覆盖区间:排序(非二重循环暴力)
算法·leetcode·题解·排序
Σίσυφος19007 小时前
激光三角 光平面标定之后计算深度图
算法·平面
阿文的代码库7 小时前
经典算法题剖析:按奇偶排序数组
数据结构·算法
AI小码7 小时前
WAIC 2026前瞻:AI产业进入拼落地的下半场
人工智能·算法·ai·程序员·大模型·编程·智能体
珠海西格电力8 小时前
零碳园区数据应用的具体场景有哪些?
大数据·人工智能·算法·架构·能源
geovindu9 小时前
CSharp: Dijkstra Algorithms
开发语言·后端·算法·c#
学逆向的9 小时前
汇编——位运算
开发语言·汇编·算法·网络安全
可编程芯片开发9 小时前
基于simulink的PEM燃料电池控制系统建模与仿真,对比PID,积分分离以及滑模控制器
算法