代码随想录|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))
相关推荐
WBluuue15 小时前
Codeforces 1095 Div2(ABCDE)
c++·算法
tryCbest15 小时前
Flask vs FastAPI 全方位对比与实战
python·flask·fastapi
测试员周周15 小时前
【Appium 系列】第04节-Page Object 模式 — BasePage 基类设计
开发语言·数据库·人工智能·python·语言模型·appium·web app
无限中终15 小时前
如何抓取某音视频的互动数据
爬虫·python
IT当时语_青山师__JAVA技术栈15 小时前
数组与链表深度解析:从内存布局到工业级实践
java·算法·面试
吃着火锅x唱着歌15 小时前
LeetCode 496.下一个更大元素I
算法·leetcode·职场和发展
坐吃山猪15 小时前
Python34_装饰器知识
开发语言·python·ubuntu
ZHW_AI课题组15 小时前
调用华为智能云API实现手写图片识别
图像处理·python·机器学习·华为·分类
weixin_6600967815 小时前
【无标题】
python·debugpy
小草cys15 小时前
Anaconda 的虚拟环境(envs)从默认的 C 盘迁移到其他磁盘
开发语言·python·anaconda