Сложность: medium
Целое число имеет монотонно возрастающие цифры тогда и только тогда, когда каждая пара соседних цифр x и y удовлетворяет x <= y. Задав целое число n, верните наибольшее число, которое меньше или равно n с монотонно возрастающими цифрами.
Пример:
Input: n = 10
Output: 9
👨💻 Алгоритм:
1⃣Преобразуйте число в строку для удобства обработки.
2⃣Найдите позицию, где последовательность перестает быть монотонной.
3⃣Уменьшите соответствующую цифру и установите все последующие цифры в 9.
😎 Решение:
public class Solution {
public int monotoneIncreasingDigits(int n) {
char[] digits = Integer.toString(n).toCharArray();
int mark = digits.length;
for (int i = digits.length - 1; i > 0; i--) {
if (digits[i] < digits[i - 1]) {
mark = i;
digits[i - 1]--;
}
}
for (int i = mark; i < digits.length; i++) {
digits[i] = '9';
}
return Integer.parseInt(new String(digits));
}
}Ставь 👍 и забирай 📚 Базу знаний