《Leetcode of December》738.单调递增的数字

class Solution:
    def monotoneIncreasingDigits(self, N: int) -> int:
        if N<10:
            return N
        char = [int(i) for i in str(N)]
        flag = len(char)
        for i in range(len(char)-1,0,-1):
            if char[i]<char[i-1]:
                flag = i
                char[i-1]-=1
        for i in range(flag,len(char)):
            char[i]=9
        char = [str(i) for i in char]
        return int(''.join(char))
  • 如果当前数字从高位到第位本身就是递增的那么就返回本身不用做处理
  • 如果当前数字是0~9之间的数字也返回本身
  • 其余的数字需要进行处理
    • 保证从高位到第位是递增的
    • 从右到左进行遍历,如果低位小于高位,那么高位-1,低位都变成9,并且记录高位的位置
    • 将记录的那个高位的位置一直到低位都变成9

总结:贪心算法的应用。 

猜你喜欢

转载自blog.csdn.net/weixin_37724529/article/details/111208145
今日推荐