zoukankan      html  css  js  c++  java
  • [LeetCode No.738] 单调递增的数字

    题目

    题解

    这道题的思路就是
    1.先把数字转换为Char数组
    2.从index为0开始找,找到不满足单调递增的第一个数,比如 123245 则找到index=3 若没找到则返回初始数
    3.从index往前循环char[index-1]--;index-- 如其前面的数满足单调递增 则结束循环 //保证找到index后,完成char[index-1]-=1,index前面的数仍然满足单调递增,
    4.将index+1到最后一个数 置为 9

    代码

    class Solution {
    public static int monotoneIncreasingDigits(int N) {
        char[] ans = Integer.toString(N).toCharArray();
        int i = 1;
    
        while(i < ans.length && ans[i-1] <= ans[i]){  //此处不能互换&&条件,否则i为ans.length时,i会溢出   &&为短路与,第一个条件为False,第二个不会判断
            i++;
        }
        if (i < ans.length){       //判断是否给定初始数就是单调递增数
            while (i > 0 && ans[i] < ans[i-1]){              //不要忘记i>0 否则i==0时,i-1溢出
                ans[i-1]--;                //此处只能ans[i-1]--或者ans[i-1]-=1  此处包含自动类型转换   若ans[i-1]=ans[i-1]-1则报错,因为有赋值操作,且无自动类型转换
                i--;
            }
            for(i=i+1;i<ans.length;i++){
                ans[i] = '9';
            }
        }
    
        return Integer.parseInt(new String(ans));
        }
    }
    
  • 相关阅读:
    模拟测试20190815(已更新)
    [JLOI2015]管道连接
    [BJWC2018]最长上升子序列
    [CQOI2012]局部极小值
    [HNOI2010]Bus 公交线路
    [BZOJ4903/CTSC2017]吉夫特
    [BZOJ3717/PA2014]Pakowanie
    [NOI2015]寿司晚宴
    [BZOJ4145/AMPPZ2014]The Prices
    [Usaco2013 Nov]No Change
  • 原文地址:https://www.cnblogs.com/Mr-BING/p/14152750.html
Copyright © 2011-2022 走看看