leetcode 738. Monotone Increasing Digits | 738. 单调递增的数字(Java)

x33g5p2x  于2021-11-25 转载在 Java  
字(0.6k)|赞(0)|评价(0)|浏览(257)

题目

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

相关文章

最新文章

更多