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

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

思路:

定义一个变量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));
    }
}
相关推荐
luj_17685 分钟前
一线一区一变破解人盯人防守密码
开发语言·网络·c++·经验分享·算法
Wang's Blog28 分钟前
Java框架快速入门: Spring Security+OAuth2之字段验证与自定义验证注解实战
java·算法·spring
带多刺的玫瑰34 分钟前
Leecode#29刷题之两数相除
java·python·算法
smj2302_7968265235 分钟前
解决leetcode第4017题数组中的峰值II
python·算法·leetcode
午彦琳40 分钟前
2026.9.9
数据结构·算法·leetcode
luj_176842 分钟前
中锋卡位与开放线博弈
c语言·开发语言·网络·经验分享·算法
洋不写bug1 小时前
二叉树(四)经典算法题目解析,公共祖先,二叉树构造,非递归遍历
数据库·算法·二叉树·二叉树构造·公共祖先
hansang_IR1 小时前
【题解】P4454 [CQOI2018] 破解D-H协议
c++·算法·密码学·数论
梓䈑1 小时前
【动态规划系列】路径问题、子数组 和 子序列问题、背包问题
c++·算法·动态规划
aqiu1111111 小时前
【数位 DP / 记忆化搜索】蓝桥云课 - 光轨区的 AI 数 题解
c++·算法·蓝桥杯·数位dp