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 = length
for i in range(length - 1):
if num[i]>num[i+1]:
marker = i
while marker > 0 and num[marker] == num[marker - 1]: #寻找相同值的第一个
marker -= 1
num[marker] = str(int(num[marker]) - 1) #把该值减一
for j in range(marker + 1, length): #后面的值均为9
num[j] = '9'
break
return int("".join(num))