Leetcode 738 Solution

This article provides solution to leetcode question 738 (monotone-increasing-digits)

https://leetcode.com/problems/monotone-increasing-digits

Solution

class Solution:
    def monotoneIncreasingDigits(self, N: int) -> int:
        a = str(N)

        s = []
        for i, ch in enumerate(a):
            if not s or s[-1] <= int(ch):
                s.append(int(ch))
            else:
                break
        else:
            return N

        s[-1] -= 1
        while len(s) > 1 and s[-1] < s[-2]:
            s.pop(-1)
            s[-1] -= 1

        ans = int("".join([str(v) for v in s]))
        while ans * 10 + 9 <= N:
            ans = ans * 10 + 9
        return ans