贪心算法解决单调递增数字问题

代码随想录链接:代码随想录

思路:

定义一个变量flag,表示需要将之后的数字全部变成9的位置

从后遍历数字中的每一位,如果遍历到第i位数字时它的前一位数字比它大(严格大于),令它前一位数字减1,同时令flag=i

遍历结束后,令该数字的第flag位及其之后的全部数字都变成9

最后返回最终的数字即可

代码:

java 复制代码
class Solution {
    public int monotoneIncreasingDigits(int N) {
        String[] strings = (N + "").split("");
        int start = strings.length;
        for (int i = strings.length - 1; i > 0; i--) {
            if (Integer.parseInt(strings[i]) < Integer.parseInt(strings[i - 1])) {
                strings[i - 1] = (Integer.parseInt(strings[i - 1]) - 1) + "";
                start = i;
            }
        }
        for (int i = start; i < strings.length; i++) {
            strings[i] = "9";
        }
        return Integer.parseInt(String.join("",strings));
    }
}
相关推荐
苦藤新鸡1 分钟前
21.在有序的二位数组中用O(m+n)的算法找target
算法
小尧嵌入式3 分钟前
【Linux开发二】数字反转|除数累加|差分数组|vector插入和访问|小数四舍五入及向上取整|矩阵逆置|基础文件IO|深入文件IO
linux·服务器·开发语言·c++·线性代数·算法·矩阵
one____dream6 分钟前
【算法】大整数数组连续进位
python·算法
one____dream6 分钟前
【算法】合并两个有序链表
数据结构·python·算法·链表
大江东去浪淘尽千古风流人物6 分钟前
【Project Aria】Meta新一代的AR眼镜及其数据集
人工智能·嵌入式硬件·算法·性能优化·ar·dsp开发
电饭叔6 分钟前
has_solution = False 是什么 费马大定律代码化和定理《计算机科学中的数学》外扩学习3
学习·算法
We་ct7 分钟前
LeetCode 238. 除了自身以外数组的乘积|最优解详解(O(n)时间+O(1)空间)
前端·算法·leetcode·typescript
闻缺陷则喜何志丹8 分钟前
【动态规划】P9980 [USACO23DEC] Flight Routes G|普及+
c++·算法·动态规划·洛谷
Σίσυφος19008 分钟前
视觉矩阵之 正交矩阵
人工智能·算法·矩阵
wen__xvn9 分钟前
基础算法集训第21天:Bellman-Ford
算法