leetcode738

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一定是从左向右顺序中第一个不满足增序的。'''

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值