单调递增的数字【贪心算法】

  1. 单调递增的数字
    当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。
    给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈 单调递增 。
java 复制代码
public class Solution {
    public int monotoneIncreasingDigits(int N) {
        // 将整数N转换为字符串
        String strNum = Integer.toString(N);
        // flag用来标记赋值9从哪里开始
        // 设置为这个默认值,为了防止第二个for循环在flag没有被赋值的情况下执行
        int flag = strNum.length();
        // 将字符串转换为字符数组,以便后续修改字符
        char[] numArray = strNum.toCharArray();
        
        // 从字符串的末尾向前遍历,查找需要减少的位置
        for (int i = strNum.length() - 1; i > 0; i--) {
            // 如果当前字符比下一个字符大,则需要减少当前字符的值
            if (numArray[i - 1] > numArray[i]) {
                // 标记需要减少的位置
                flag = i;
                // 减少当前字符的值
                numArray[i - 1]--;
            }
        }
        
        // 将标记位置之后的所有字符都设置为'9'
        for (int i = flag; i < strNum.length(); i++) {
            numArray[i] = '9';
        }
        
        // 将字符数组转换回整数并返回(将字符数组转换为字符串,这是因为Integer.parseInt方法需要一个字符串作为参数)
        return Integer.parseInt(new String(numArray));
    }
}
相关推荐
Msshu12317 分钟前
2~5串锂电快充优选|XSP36 Type‑C升压/升降压快充管理芯片
数据结构·随机森林·贪心算法·排序算法·线性回归·启发式算法
shirsl1 小时前
算法 Day 2 滑动窗口 + 栈 / 单调栈
开发语言·python·算法
土司大王2 小时前
LeetCode hot100 回溯专题总结:Java 通用模板、决策树模型
java·算法·leetcode·决策树
2601_962218612 小时前
万象生鲜系统订单全生命周期状态同步技术实现业务可视
大数据·数据库·人工智能·python·算法
那年窗外下的雪.2 小时前
AIDC 学习日志|第 22 天|All-Active/Single-Active 故障演练设计
服务器·网络·学习·算法·哈希算法
wzdark3 小时前
基于启发式搜索的最优路径规划算法研究4
算法
l1t3 小时前
用superpi、tinypi、tpi等工具计算圆周率的比较
c语言·算法
a187927218313 小时前
【算法】链表(二):链表上的双指针——变速、异链与定距,和一份路程账本
数据结构·算法·leetcode·链表·go·指针·环形链表
2601_958352905 小时前
还要写 AEC 算法?0 代码 + 6 个引脚,F-18 让通话清晰度提升 300%
人工智能·算法·降噪消回音
happyprince5 小时前
03-regmix-深刻观-哲学与升华
算法