Medium
An integer has monotone increasing digits if and only if each pair of adjacent digits x
and y
satisfy x <= y
.
Given an integer n
, return the largest number that is less than or equal to n
with monotone increasing digits.
Example 1:
Input: n = 10
Output: 9
Example 2:
Input: n = 1234
Output: 1234
Example 3:
Input: n = 332
Output: 299
Constraints:
0 <= n <= 109
@Suppress("NAME_SHADOWING")
class Solution {
fun monotoneIncreasingDigits(n: Int): Int {
var n = n
var i = 10
while (n / i > 0) {
val digit = n / i % 10
val endNum = n % i
val firstEndNum = endNum * 10 / i
if (digit > firstEndNum) {
n -= endNum + 1
}
i *= 10
}
return n
}
}