LeetCode 738. 单调递增的数字 java题解

https://leetcode.cn/problems/monotone-increasing-digits/description/

贪心

java 复制代码
class Solution {
    public int monotoneIncreasingDigits(int n) {
        char[] nums=String.valueOf(n).toCharArray();
        int len=nums.length;
        int start=len;//记录从哪里开始,赋值9,从左到右
        //从右到左遍历,从倒数第二个开始
        for(int i=len-2;i>=0;i--){
            if(nums[i]>nums[i+1]){//检查是否满足递增,不满足
                //当前位置,数字减小1
                nums[i]--;
                //下个位置,数字变为9
                start=i+1;
            }
        }
        for(int i=start;i<len;i++){
            nums[i]='9';
        }
        return Integer.parseInt(String.valueOf(nums));
    }
}
/*
一旦出现strNum[i - 1] > strNum[i]的情况(非单调递增),首先想让strNum[i - 1]--,然后strNum[i]给为9
来strNum[i - 1] > strNum[i],strNum[i - 1]减小后,跟strNum[i]的大小关系不知。
但strNum[i]变成了9,strNum[i - 1]一定比9小

要从后向前遍历位数。还需要标记从哪里开始赋值9(从前往后)。

要求:小于等于n。从n开始找,[0,n]
要求:单调递增
要求:最大的数
*/
相关推荐
大春儿的试验田几秒前
高并发收藏功能设计:Redis异步同步与定时补偿机制详解
java·数据库·redis·学习·缓存
Gappsong8743 分钟前
【Linux学习】Linux安装并配置Redis
java·linux·运维·网络安全
hqxstudying7 分钟前
Redis为什么是单线程
java·redis
RainbowSea18 分钟前
NVM 切换 Node 版本工具的超详细安装说明
java·前端
逆风局?20 分钟前
Maven高级——分模块设计与开发
java·maven
周某某~22 分钟前
maven详解
java·maven
读书点滴24 分钟前
笨方法学python -练习14
java·前端·python
lingRJ77725 分钟前
微服务架构下的抉择:Consul vs. Eureka,服务发现该如何选型?
java·eureka·springcloud·consul·backend·microservices·servicediscovery
RainbowSea25 分钟前
问题:后端由于字符内容过长,前端展示精度丢失修复
java·spring boot·后端
C1829818257528 分钟前
OOM电商系统订单缓存泄漏,这是泄漏还是溢出
java·spring·缓存