代码随想录|Day31|贪心06|738.单调递增的数字

738.单调递增的数字

思路:

1. 从右向左遍历

从字符串的最后一位向前遍历,即从低位到高位进行检查。这是因为当我们修改某一位数字时,可能会影响到更低位的数字。

2. 检查并修改数字

在遍历过程中,如果发现当前位数字小于其前一位(即,前一位大于后一位,破坏了单调递增的规则),我们需要对前一位数字进行调整:

  • 将前一位数字减1。
  • 将这一位及之后所有位数字设置为9。
python 复制代码
class Solution:
    def monotoneIncreasingDigits(self, n: int) -> int:
        # python的字符串不可变,因此转为list
        s = list(str(n))
        
        for i in range(len(s) - 1, 0, -1):
            # 如果前一位更大,则前一位 - 1,后序位数全部改为9
            if s[i-1] > s[i]:
                s[i-1] = str(int(s[i-1]) - 1)
                for j in range(i, len(s)):
                    s[j] = '9'

        return int(''.join(s))
相关推荐
2301_816660211 小时前
PHP怎么处理Eloquent Attribute Inference属性推断_Laravel从数据自动推导类型【操作】
jvm·数据库·python
第一程序员1 小时前
数据工程 pipelines 实践
python·github
励志的小陈1 小时前
数据结构--二叉树知识讲解
数据结构
知行合一。。。1 小时前
Python--05--面向对象(属性,方法)
android·开发语言·python
郝学胜-神的一滴1 小时前
深度学习必学:PyTorch 神经网络参数初始化全攻略(原理 + 代码 + 选择指南)
人工智能·pytorch·python·深度学习·神经网络·机器学习
leobertlan1 小时前
好玩系列:用20元实现快乐保存器
android·人工智能·算法
青梅橘子皮1 小时前
C语言---指针的应用以及一些面试题
c语言·开发语言·算法
笨笨饿1 小时前
#58_万能函数的构造方法:ReLU函数
数据结构·人工智能·stm32·单片机·硬件工程·学习方法
qq_372154232 小时前
Go 中自定义类型与基础类型的显式转换规则详解
jvm·数据库·python
_深海凉_3 小时前
LeetCode热题100-有效的括号
linux·算法·leetcode