伴你如风、护你如影|

xzh-yyds

园龄:3年9个月粉丝:0关注:2

leetcode738-单调递增的数字

单调递增的数字

  • 贪心算法

先对数字进行遍历,找出从零开始单调递增的子序列。
如果此时i小于数组长度,意味着数组不是全部递增的,需要对数组进行修改。那么让i从后向前进行遍历,每次将arr[i-1]数组减一,直到arr[i] >= arr[i-1]成立为止。将前面的数字减少之后,由于前面的数字已经小于原数字,那么后面的数字只需要全部填入9即可。

class Solution {
    public int monotoneIncreasingDigits(int n) {
        char arr[] = String.valueOf(n).toCharArray();
        int i = 0;
        while(i == 0 || (i < arr.length && arr[i] >= arr[i-1]))  i++;
        if(i < arr.length){
            while(i > 0 && arr[i] < arr[i-1])   arr[--i]--;
            for(++i; i < arr.length; i++)  arr[i] = '9';
        }
        return Integer.parseInt(new String(arr));
    }
}

本文作者:xzh-yyds

本文链接:https://www.cnblogs.com/xzh-yyds/p/16587856.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   xzh-yyds  阅读(15)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
展开