738. Monotone Increasing Digits
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
class Solution {
public int monotoneIncreasingDigits(int n) {
int length = 1;
for (int temp = n; temp >= 10; temp/=10) length++;
int[] array = new int[length];
for (int i = 0; i < length; i++) {
array[i] = n % 10;
n /= 10;
}
for (int i = 0; i < length-1; i++) {
if (array[i] < array[i+1]) {
array[i+1] = array[i+1] == 0 ? 0 : (array[i+1]-1);
change(i, array);
}
}
int result = 0;
for (int i = 0; i < length; i++) {
result = (int) (result + Math.pow(10, i) * array[i]);
}
return result;
}
public void change(int i, int[] array) {
for (int j = 0; j <= i; j++) array[j] = 9;
}
}