代码随想录|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))
相关推荐
甄心爱学习7 小时前
KMP算法(小白理解)
开发语言·python·算法
杭州杭州杭州7 小时前
数据结构与算法(5)---二叉树
数据结构
万象.7 小时前
redis数据结构list的基本指令
数据结构·redis·list
培培说证7 小时前
2026 高职计算机专业考证选择哪个更实用?
python
zephyr057 小时前
C++ STL unordered_set 与 unordered_map 完全指南
开发语言·数据结构·c++
wen__xvn7 小时前
牛客周赛 Round 127
算法
大锦终7 小时前
dfs解决FloodFill 算法
c++·算法·深度优先
ASD123asfadxv7 小时前
LCD屏幕表面缺陷检测系统凹陷识别与定位技术分析
python
橘颂TA7 小时前
【剑斩OFFER】算法的暴力美学——LeetCode 200 题:岛屿数量
算法·leetcode·职场和发展
Ulyanov8 小时前
大规模战场数据与推演:性能优化与多视图布局实战
开发语言·python·性能优化·tkinter·pyvista·gui开发