代码随想录|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))
相关推荐
Merlos_wind20 分钟前
HashMap详解
算法·哈希算法·散列表
狐狐生风21 分钟前
LangChain 向量存储:Chroma、FAISS
人工智能·python·学习·langchain·faiss·agentai
狐狐生风30 分钟前
LangChain RAG 基础
人工智能·python·学习·langchain·rag·agentai
汉克老师1 小时前
GESP2025年3月认证C++五级( 第三部分编程题(1、平均分配))
c++·算法·贪心算法·排序·gesp5级·gesp五级
老前端的功夫1 小时前
【Java从入门到入土】28:Stream API:告别for循环的新时代
java·开发语言·python
yaoxin5211231 小时前
397. Java 文件操作基础 - 创建常规文件与临时文件
java·开发语言·python
dFObBIMmai2 小时前
MySQL主从同步中大事务导致的延迟_如何拆分大事务优化同步
jvm·数据库·python
szccyw02 小时前
mysql如何限制特定存储过程执行权限_MySQL存储过程安全访问
jvm·数据库·python
小白学大数据2 小时前
Python 自动化爬取网易云音乐歌手歌词实战教程
爬虫·python·okhttp·自动化
Yzzz-F3 小时前
Problem - 2205D - Codeforces
算法