• [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));
        }
    }
    
  • 相关阅读:
    Android中margin和padding的区别
    自动编号
    5s6r
    手动上传文件到数据表
    FTP from Axapta
    vba 图片
    右键菜单
    x++ 手动while select 表
    传输文件从客户端到服务器
    address
  • 原文地址:https://www.cnblogs.com/Mr-BING/p/14152750.html
Copyright © 2020-2023  润新知