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

  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));
    }
}
相关推荐
东方翱翔17 分钟前
第十六届蓝桥杯大赛软件赛省赛第二场 C/C++ 大学 A 组
算法·职场和发展·蓝桥杯
Blossom.1181 小时前
量子计算在密码学中的应用与挑战:重塑信息安全的未来
人工智能·深度学习·物联网·算法·密码学·量子计算·量子安全
1白天的黑夜11 小时前
贪心算法-860.柠檬水找零-力扣(LeetCode)
c++·算法·leetcode·贪心算法
搏博1 小时前
专家系统的基本概念解析——基于《人工智能原理与方法》的深度拓展
人工智能·python·深度学习·算法·机器学习·概率论
yzx9910131 小时前
决策树随机深林
人工智能·python·算法·决策树·机器学习
Y1nhl1 小时前
力扣hot100_子串_python版本
开发语言·python·算法·leetcode·职场和发展
uhakadotcom2 小时前
过来人给1-3 年技术新人的几点小小的建议,帮助你提升职场竞争力
算法·面试·架构
wuqingshun3141592 小时前
蓝桥杯 16. 密文搜索
c++·算法·职场和发展·蓝桥杯·深度优先
Brookty3 小时前
【数据结构】哈希表
数据结构·算法·哈希算法·散列表
Dovis(誓平步青云)4 小时前
【数据结构】·励志大厂版(复习+刷题):二叉树
c语言·数据结构·经验分享·笔记·学习·算法·学习方法