单调递增的数字-贪心738-python

没看答案。

class Solution:
    def monotoneIncreasingDigits(self, n: int) -> int:
        def check(num):
            # 从高位到低位提取num的每一位数字
            ls = []
            while num != 0:
                ls.append(num%10)
                num = num // 10           
            ls = ls[::-1]

            # 检测相邻位是否单调递增
            tmp = ls[0]
            for i in range(1, len(ls)):
                '''
                若没有递增,则需要从这里开始把所有的低位都置0,然后再-1,因为9是最大的数字
                '''
                if ls[i] < ls[i-1]:
                    tmp = tmp * pow(10, len(ls[i:]))
                    return tmp - 1
                tmp = tmp * 10 + ls[i]
            
            return tmp       


        while n > 9:
            # 不断调用check函数,如不符合单调递增,则返回的tmp和输入的n不相等
            # 若tmp与n相等,直接返回结果
            tmp = check(n)
            if tmp == n:
                return n
            n = tmp
        
        return n
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值