代码随想录|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))
相关推荐
Sagittarius_A*4 分钟前
形态学与多尺度处理:计算机视觉中图像形状与尺度的基础处理框架【计算机视觉】
图像处理·人工智能·python·opencv·计算机视觉
m0_561359677 分钟前
使用PyQt5创建现代化的桌面应用程序
jvm·数据库·python
2301_790300967 分钟前
用Python实现自动化的Web测试(Selenium)
jvm·数据库·python
m0_748233179 分钟前
C#与C语言:5大核心语法共性
java·jvm·算法
自可乐18 分钟前
LangGraph从入门到精通:构建智能Agent的完整指南
人工智能·python·机器学习
m0_5613596720 分钟前
使用Docker容器化你的Python应用
jvm·数据库·python
痴儿哈哈26 分钟前
C++与硬件交互编程
开发语言·c++·算法
小O的算法实验室33 分钟前
2024年ESWA SCI1区TOP,异构无人机配送问题的集成多目标优化方法,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
日拱一卒——功不唐捐39 分钟前
循环队列+双端队列(C语言)
c语言·数据结构
草履虫建模40 分钟前
力扣算法 121. 买卖股票的最佳时机
算法·leetcode·职场和发展·贪心算法·动态规划·一次遍历