https://leetcode.com/problems/monotone-increasing-digits/
先把 num 的每一位转化为数组。
从左往右找第一个 前>后 的位置,记为a[i]。
指针从 i 位置开始,回退到 a[i-1]==a[i] 的第一个位置。新的位置仍记为 i。
最后,将 a[i]–,i 以后的位置全置为 9,生成新的数组即为所求。
class Solution {
public int monotoneIncreasingDigits(int n) {
int L = String.valueOf(n).length();
int[] arr = new int[L];
for (int i = L - 1; i >= 0; i--) {
arr[i] = n % 10;
n /= 10;
}
for (int i = 0; i < L - 1; i++) {
if (arr[i] > arr[i + 1]) {
while (i > 0 && arr[i - 1] == arr[i]) i--;
arr[i] = arr[i] - 1;
for (int j = i + 1; j < L; j++) {
arr[j] = 9;
}
break;
}
}
int result = 0;
for (int i = 0; i < L; i++) {
result *= 10;
result += arr[i];
}
return result;
}
}
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/sinat_42483341/article/details/121532167
内容来源于网络,如有侵权,请联系作者删除!