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]
要求:单调递增
要求:最大的数
*/
相关推荐
夫礼者4 分钟前
【极简监控】挖出被遗忘的 JMX 金矿:用 Jolokia + Hawtio 把 VisualVM 搬进浏览器
java·监控·jolokia·jmx·hawtio
Slow菜鸟5 分钟前
Java 开发环境安装指南(7) | Nginx 安装
java·开发语言·nginx
沐苏瑶5 分钟前
Java反序列化漏洞
java·开发语言·网络安全
Rsun045512 小时前
为什么要配置maven
java·maven
人道领域2 小时前
【Redis实战篇】初步基于Redis实现的分布式锁---基于黑马点评
java·数据库·redis·分布式·缓存
FakeOccupational6 小时前
【数学 密码学】量子通信:光的偏振&极化的量子不确定性特性 + 量子密钥分发 BB84算法步骤
算法·密码学
呱牛do it7 小时前
企业级门户网站设计与实现:基于SpringBoot + Vue3的全栈解决方案(Day 3)
java·vue
ZhengEnCi8 小时前
S10-蓝桥杯 17822 乐乐的积木塔
算法
神の愛8 小时前
左连接查询数据 left join
java·服务器·前端
贾斯汀玛尔斯8 小时前
每天学一个算法--拓扑排序(Topological Sort)
算法·深度优先