题解
思路
代码
class Solution:
### 1215 逆序遍历(超时)
def monotoneIncreasingDigits(self, N: int) -> int:
def fun(num):
last, num = num % 10, num // 10
while num != 0:
if last < num % 10: return False
else:
last = num % 10
num //= 10
return True
while N >= 0:
if fun(N): return N
else: N -= 1
### 1215 找规律:以1为底数相加进行判断(36 ms,14.8 MB)
def monotoneIncreasingDigits(self, N: int) -> int:
# base是根据题目要求N的最大值10^9而来,即9位数
base, res = 111111111, 0
# 根据位数的个数来执行循环,最多9次(不满9位数的N,会多执行几个无效循环,此时base已经为0)
for _ in range(9):
# 通过循环来找到小于当前N的 最大的 base
while base + res > N:
base //= 10
res += base
return res