class Solution:
def monotoneIncreasingDigits(self, n: int) -> int:
num=list(str(n))#str形式无法修改,所以必须用list
flag=len(num)#用来记录哪些位置需要改成9
for i in range(len(num)-1,0,-1):#一定从右向左,因为flag是不断更新的,并且不需要到左边第一位,因为左边第一位是不需要更新flag的。
if int(num[i])<int(num[i-1]):#如果更小位的数字小,那么就让大的位置的数,-1。
num[i-1]=str(int(num[i-1])-1)
flag=i#需要记录下,究竟是从哪个位置开始小位数字比大位数字要小。
for i in range(flag,len(num)):#把从flag开始的数,换成9.
num[i]='9'
return int(''.join(num))#最后输出整数型。
'''从右向左遍历,找到整个数中,从左向右第一个不满足递增顺序的索引,让它-1,往后都变成9就可以了。
第一个for循环一定从右向左倒序进行,因为flag是不断更新的,如果我们从左向右遍历,flag不断更新就不会是
第一个不满足递增顺序的索引。所以我们从右向左遍历,最后得到的flag一定是从左向右顺序中第一个不满足增序的。'''
12-02
135
09-24
281