LeetCode in Kotlin

738. Monotone Increasing Digits

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:

Solution

@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
    }
}