|
发表于 2023-2-23 10:07:07
|
显示全部楼层
- def monotoneIncreasingDigits(n: int) -> int:
- # 将整数 n 拆分成各位数字
- digits = []
- while n > 0:
- digits.append(n % 10)
- n //= 10
- digits.reverse()
- # 从最高位开始遍历每个数字
- i = 1
- while i < len(digits) and digits[i] >= digits[i - 1]:
- i += 1
- if i == len(digits):
- return n
- # 如果当前位数字比前一位小,那么就把当前位数字减 1,同时把当前位后面的所有数字都变成 9
- while i > 0 and digits[i] < digits[i - 1]:
- digits[i - 1] -= 1
- i -= 1
- for j in range(i + 1, len(digits)):
- digits[j] = 9
- # 把各位数字重新组合成一个整数
- res = 0
- for digit in digits:
- res = res * 10 + digit
- return res
复制代码 |
|