代码随想录|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))
相关推荐
泡沫冰@20 小时前
GO 语言基础
开发语言·算法·golang
让你三行代码QAQ20 小时前
AI大模型开发核心名词速览
python
2401_8685347820 小时前
农商行分布式网络建设
python·pygame
luj_176821 小时前
元设计的诱惑与现实
c语言·开发语言·c++·经验分享·算法
小星星闪亮登场21 小时前
ST表--倍增思想
开发语言·数据结构·c++·算法·思维
AC赳赳老秦21 小时前
OpenClaw 多源采集公开行业数据:从原始信息到研究报告初稿的自动化实践
java·c语言·c++·python·php·deepseek·openclaw
程序员雷欧21 小时前
AQS深度解析
开发语言·python
玩三国杀玩的21 小时前
Pytorch-c++-CUDA
c++·pytorch·python·深度学习
Albert Edison21 小时前
PyCharm 字体大小设置
ide·python·pycharm
马可家的菠萝21 小时前
Vue3 + Canvas 手绘笔记工程化实践:别把画布只当成一张 PNG
前端·vue.js·算法