LeetCode 738. 单调递增的数字 java题解

https://leetcode.cn/problems/monotone-increasing-digits/description/

贪心

java 复制代码
class Solution {
    public int monotoneIncreasingDigits(int n) {
        char[] nums=String.valueOf(n).toCharArray();
        int len=nums.length;
        int start=len;//记录从哪里开始,赋值9,从左到右
        //从右到左遍历,从倒数第二个开始
        for(int i=len-2;i>=0;i--){
            if(nums[i]>nums[i+1]){//检查是否满足递增,不满足
                //当前位置,数字减小1
                nums[i]--;
                //下个位置,数字变为9
                start=i+1;
            }
        }
        for(int i=start;i<len;i++){
            nums[i]='9';
        }
        return Integer.parseInt(String.valueOf(nums));
    }
}
/*
一旦出现strNum[i - 1] > strNum[i]的情况(非单调递增),首先想让strNum[i - 1]--,然后strNum[i]给为9
来strNum[i - 1] > strNum[i],strNum[i - 1]减小后,跟strNum[i]的大小关系不知。
但strNum[i]变成了9,strNum[i - 1]一定比9小

要从后向前遍历位数。还需要标记从哪里开始赋值9(从前往后)。

要求:小于等于n。从n开始找,[0,n]
要求:单调递增
要求:最大的数
*/
相关推荐
我登哥MVP4 小时前
Spring Boot 从“会用”到“精通”:参数解析原理
java·spring boot·后端·spring·servlet·maven·intellij-idea
Wenzar_4 小时前
VITS+Whisper微调:低延迟TTS实战
java·人工智能·whisper
创可贴治愈心灵4 小时前
AI浪潮下C#就业前景剖析:深耕C#为主,按需选修Java与Python
java·人工智能·c#
huohaiyu5 小时前
深入解析Java垃圾回收机制
java·开发语言·算法·gc
浮芷.5 小时前
鸿蒙PC端 TTS 并发调用问题详解:资源竞争与队列管理
算法·华为·开源·harmonyos·鸿蒙·鸿蒙系统
SunnyDays10115 小时前
如何在 Java 中实现 OFD 与 PDF 格式互转
java·开发语言
装不满的克莱因瓶5 小时前
掌握感知器的学习原理
人工智能·python·神经网络·算法·ai·卷积神经网络
Lsk_Smion5 小时前
力扣实训 _ [994].腐烂的橘子/图论
算法·leetcode·图论
轻微的风格艾丝凡5 小时前
两电平三相VSC整流模式从不控整流平滑切换至有源整流调试记录
算法·dsp·c2000
dongf20195 小时前
R语言KNN算法
算法·数据分析·r语言