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]
要求:单调递增
要求:最大的数
*/
相关推荐
2601_962071578 小时前
【Java报错已解决】org.springframework.beans.factory.BeanCreationException
java·开发语言
zww89491119 小时前
酒馆预约系统开发实战:从需求分析到上线全流程指南
java·eclipse
淡海水9 小时前
07-04-并发-ConcurrentBag-T-工作窃取WorkStealing算法
开发语言·算法·c#·bag·concurrent·workstealing
leobertlan10 小时前
好玩系列:训练一个神经网络模型指导小孩玩游戏2-大局观教练
算法
Tisfy10 小时前
LeetCode 3876.构造奇偶一致的数组 II:三种情况分类讨论(其实还是脑筋急转弯)
算法·leetcode·题解·脑筋急转弯
乐迪信息11 小时前
智慧港口船舶AI算法实现在线状态监测
大数据·人工智能·深度学习·算法·计算机视觉
zww894911112 小时前
匿名树洞系统开发实战:从需求分析到部署指南
java·eclipse
黑马程序员毕设13 小时前
基于Java的医院药品管理系统的优化设计与实现
java·开发语言·spring boot·小程序·架构·课程设计·毕设
木井巳13 小时前
【BFS/DFS 解决 FloodFill 算法】太平洋大西洋水流问题
java·算法·leetcode·深度优先·广度优先·宽度优先·推荐算法
心抵鹊13 小时前
归并排序之翻转对(hard)
数据结构·算法