代码随想录|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))
相关推荐
passxgx几秒前
12.1 均值、方差与概率
算法·均值算法·概率论
shengli7223 分钟前
Python Lambda(匿名函数):简洁之道
jvm·数据库·python
Clarice__10 分钟前
Anaconda安装、使用教程
windows·python·机器学习·conda·visual studio code
血小板要健康11 分钟前
189.轮转数组,力扣
数据结构·算法·leetcode
项目申报小狂人13 分钟前
CEC2024获胜算法mLSHADE-RL:具有重新启动和本地搜索机制的多操作员集成LSHADE
算法
Faker66363aaa13 分钟前
YOLOv26人脸检测算法实现与优化_2
算法·yolo
蒟蒻的贤13 分钟前
set和map
算法
weixin_4454023015 分钟前
如何为开源Python项目做贡献?
jvm·数据库·python
格林威17 分钟前
Baumer相机铁轨表面裂纹巡检:提升铁路安全监测能力的 7 个关键技术,附 OpenCV+Halcon 实战代码!
人工智能·数码相机·opencv·算法·安全·计算机视觉·分类
m0_6860416119 分钟前
C++中的装饰器模式变体
开发语言·c++·算法