代码随想录第三十一天|单调递增的数字| 监控二叉树

单调递增的数字

保证数字单调递增,就需要保证从个位数起依次递减,若十位和个位不符合递减规则,则十位将减一,个位将置为9.大致思路就是如此。但是有几个细节还需注意。

这里是数字,怎么比较好的对其各个位进行处理呢?这里是通过将数字转为字符串,然后将字符串转为字符数组来进行遍历比较。最后将字符数组转为字符串再转为数字返回。

然后这里是设置一个标志位来记录要置9的区间。因为如果不符合规则才置9的话,遇到1000这种特殊情况结果就是900,不符合条件,所以需要一个标志位来记录一个区间。

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

监控二叉树

此题困难,二刷再解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值