738. 单调递增的数字
当且仅当每个相邻位数上的数字 x
和 y
满足 x <= y
时,我们称这个整数是单调递增的。
给定一个整数 n
,返回 小于或等于 n
的最大数字,且数字呈 单调递增 。
示例 1:
输入: n = 10 输出: 9
示例 2:
输入: n = 1234 输出: 1234
示例 3:
输入: n = 332 输出: 299
class Solution:def monotoneIncreasingDigits(self, n: int) -> int:num = list(str(n)) # 转为字符型数组length = len(num)# 找到第一个不满足单调递增的位置marker = lengthfor i in range(length - 1):if num[i]>num[i+1]:marker = iwhile marker > 0 and num[marker] == num[marker - 1]: #寻找相同值的第一个marker -= 1num[marker] = str(int(num[marker]) - 1) #把该值减一for j in range(marker + 1, length): #后面的值均为9num[j] = '9'breakreturn int("".join(num))