代码随想录|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))
相关推荐
longlongzihan8 分钟前
LeetCode 24.两两交换链表中的节点:虚拟头结点与指针
算法·leetcode·链表
雨滴AI自动化测试8 分钟前
想让你的自动化测试接入AI,这一步必须要有。
python
residual_fan8 分钟前
基于控制感知域对抗网络的变工况故障诊断:从控制系统与运行状态协同的角度建立模型
人工智能·算法·数据挖掘·数据分析
Xin7708 分钟前
LeetCode 105. 从前序与中序遍历序列构造二叉树(递归分治法)
leetcode
心仪久了会沦陷10 分钟前
C语言数据结构入门——队列补充:循环队列的数组实现
c语言·开发语言·数据结构·笔记
翻山越岭的少年14 分钟前
用控制信号理解状态变化:基于控制感知域对抗网络的变工况故障诊断
算法
用户76241175670518 分钟前
第八章 异常处理及程序调试
python
源图客23 分钟前
Python环境安装与PyCharm的第一个项目
开发语言·python·pycharm
longlongzihan24 分钟前
从LeetCode 19. 删除链表的倒数第 N 个结点深入理解“哨兵节点”
c++·算法·leetcode·链表
DeroZan31 分钟前
# jieba 分词 & 文本语料分析 & Python 内置函数笔记
算法