738. 单调递增的数字(leetcode)

LXL's Blog / 2024-08-31 / 原文

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

class Solution {
    public int monotoneIncreasingDigits(int n) {
        // 返回单调递增的最大数字
        // 思路比较巧妙的贪心题,需要仔细考虑两个相邻位之间的比较
        // 一旦发现有前一位比后一位大,则从前一位开始,后面的所有位都置为9,前一位--
        char[] num = String.valueOf(n).toCharArray();
        int flagNine=Integer.MAX_VALUE;
        for(int i=num.length-1;i>=1;i--)
        {
            // 前一位比后一位大,则需要--,更新置为9的flag
            if( num[i-1] -'0' > num[i]-'0')
            {
                num[i-1]--;
                flagNine=i;
            }
        }
        for(int i=flagNine;i<num.length;i++)num[i]='9';
        return Integer.valueOf(String.valueOf(num));
        

    
    }
}