2024-01-04 单调递增的数字

738. 单调递增的数字

关键点:是倒序比较,找出标志位从此往后都为9了!其实可以自己画个图尝试理解一下

例如:98,一旦出现strNum[i - 1] > strNum[i]的情况(非单调递增),首先想让strNum[i - 1]–,然后strNum[i]给为9,这样这个整数就是89,即小于98的最大的单调递增整数。

2024-01-04 单调递增的数字_第1张图片

class Solution:
    def monotoneIncreasingDigits(self, n: int) -> int:
         # 需要加一个标志位 来确定什么时候是九?
        temp = list(str(n))
        flag = 0
        for i in range(len(temp) - 1, 0, -1):
            if temp[i - 1] > temp[i]:
                flag = i
                temp[i - 1] = str(int(temp[i - 1]) -1)
                for i in range(flag,len(temp)):
                    temp[i] = "9"
        return int("".join(temp))


你可能感兴趣的:(贪心算法)