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]
要求:单调递增
要求:最大的数
*/
相关推荐
郭龙_Jack6 小时前
Java的虚拟线程 VS Go语言的goroutine
java·golang
大大杰哥6 小时前
2026陕西省ICPC省赛补题(前六题)
c++·算法
risc1234566 小时前
所有“能调用大模型”的框架分类
java·服务器·前端
Brilliantwxx6 小时前
【C++】 继承与多态(上)
开发语言·c++·笔记·算法
va学弟6 小时前
Agent入门开发(3):LangChain4j 应用
java·ai
ch.ju6 小时前
Java程序设计(第3版)第四章——静态部分
java·开发语言
05候补工程师6 小时前
【线性代数】核心考点:二次型、矩阵三大关系综合与正定矩阵判别法
笔记·线性代数·考研·算法·矩阵
不负岁月无痕6 小时前
STL -- C++ string 类 模拟实现
java·开发语言·c++
亅-丿-丶丿丶一l一丶-/^n6 小时前
RLHF|PPO算法原理(一)
算法·自然语言处理
ʚ希希ɞ ྀ6 小时前
打家劫舍----背包dp
数据结构·算法·leetcode