代码随想录|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))
相关推荐
Aiclin1 分钟前
大模型基础-应用小记【转载】
python
2301_8166602111 分钟前
CSS实现盒子倒角不规则效果_利用border-radius多个值
jvm·数据库·python
2201_7610405913 分钟前
CSS如何根据父级容器宽度调整子项_利用容器查询container选择器css
jvm·数据库·python
wayz1113 分钟前
Day 9 :随机森林调参与时间序列交叉验证
算法·随机森林·机器学习
️是7818 分钟前
信息奥赛一本通—编程启蒙(3371:【例64.2】 生日相同)
开发语言·c++·算法
ZPC821019 分钟前
ROS2 快过UDP的方法
python·算法·机器人
weixin_4585801219 分钟前
如何在 Python Fabric 中正确执行 EdgeOS 配置命令
jvm·数据库·python
周末也要写八哥26 分钟前
最长递增子序列典型应用题目详解
数据结构·算法
tjc1990100528 分钟前
SQL中如何处理GROUP BY的不可排序问题_ORDERBY与聚合
jvm·数据库·python
代码N年归来仍是新手村成员28 分钟前
OTel - DataDog Observability踩坑
后端·python