738.单调递增的数字
当且仅当每个相邻位数上的数字 x
和 y
满足 x <= y
时,我们称这个整数是单调递增的。
给定一个整数 n
,返回 小于或等于 n
的最大数字,且数字呈 单调递增 。
解题思路:
对于所给数字进行str()并从后向前遍历。当前一个数大于后一个数说明不满足单调递增,将前一个数减一即缩小十倍,为了实现最大化,后面所有数字变成’9‘。
class Solution:
def monotoneIncreasingDigits(self, n: int) -> int:
strNum = list(str(n))
for i in range(len(strNum)-1, 0, -1):#backword iteration
if strNum[i-1]>strNum[i]:
#minus 1 for i-1
strNum[i-1] = str(int(strNum[i-1])-1)
#convert the rest into 9
for j in range(i, len(strNum)):
strNum[j] = '9'
return int(''.join(strNum))