> For the complete documentation index, see [llms.txt](https://mayanktyagi3111.gitbook.io/interview-prep/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mayanktyagi3111.gitbook.io/interview-prep/maths/monotone-increasing-digits.md).

# Monotone Increasing Digits

Given a non-negative integer `N`, find the largest number that is less than or equal to `N` with monotone increasing digits.

(Recall that an integer has monotone increasing digits if and only if each pair of adjacent digits `x` and `y` satisfy `x <= y`.)

**Example 1:**<br>

```
Input: N = 10
Output: 9
```

**Example 2:**<br>

```
Input: N = 1234
Output: 1234
```

**Example 3:**<br>

```
Input: N = 332
Output: 299
```

**Note:** `N` is an integer in the range `[0, 10^9]`.

```java
class Solution {
    public int monotoneIncreasingDigits(int N) {
        char[] arrN = String.valueOf(N).toCharArray();
        int monotoneIncreasingToTheLeftOf = arrN.length - 1;
        for (int i = arrN.length - 1; i > 0; i--) {
            if (arrN[i] < arrN[i - 1]) {
                monotoneIncreasingToTheLeftOf = i - 1;
                arrN[i - 1]--;
            }
        }
        for (int i = monotoneIncreasingToTheLeftOf + 1; i < arrN.length; i++)
            arrN[i] = '9';
        return Integer.parseInt(new String(arrN));
    }
}
```
