代码随想录|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))
相关推荐
tkevinjd3 小时前
MiniCode 项目详解6:原项目控制系统的10个缺陷(已修复)
python·llm·agent
dNGUZ7UGj4 小时前
10分钟完成第一个Python小游戏
python·django
2601_954526754 小时前
【工业传感与算法实战】温漂补偿与零点抗漂破局:基于二阶多项式拟合的 C/C++ 边缘校准算法,深度拆解“压力变送器什么牌子好”的技术硬指标
c语言·c++·算法
没有梦想的咸鱼185-1037-16634 小时前
AI-Python机器学习与深度学习技术:CNN/Transformer/扩散模型、SHAP可解释及Hermes智能体自动化
人工智能·python·深度学习·机器学习·chatgpt·cnn·transformer
霸道流氓气质4 小时前
SpringBoot中通用工具类库(Utils)封装与使用实践
spring boot·后端·python
叩码以求索5 小时前
浅谈:算法萌新如何高效刷题应对面试(一)
算法·面试·职场和发展
Draina6 小时前
CBC填充预言攻击-CBC Padding Oracle Crypto Attack
python·安全·web安全·网络安全·密码学·安全性测试
c238566 小时前
把 C++ 内存分配拆透:new 与 malloc 的三层血缘
开发语言·c++·算法
Angel Q.7 小时前
特征提取 | DINO 到 DINOv3
图像处理·python
不如语冰7 小时前
AI大模型入门-pytorch-张量2 tensor创建
python