代码随想录|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))
相关推荐
棱镜Coding5 分钟前
LeetCode-Hot100 30.两两交换链表中的节点
算法·leetcode·链表
虎头金猫8 分钟前
内网导航站 “出圈”!用 cpolar 解锁 Dashy 远程访问新玩法
java·c++·python·程序人生·职场和发展·php·程序员创富
向哆哆9 分钟前
Flutter × OpenHarmony 跨端实战:垃圾分类应用页面架构与数据结构设计详解
数据结构·flutter·开源·鸿蒙·openharmony
2301_7903009611 分钟前
C++与量子计算模拟
开发语言·c++·算法
汽车仪器仪表相关领域20 分钟前
经典指针+瞬态追踪:MTX-A模拟废气温度(EGT)计 改装/赛车/柴油车排气温度监测实战全解
大数据·功能测试·算法·机器学习·可用性测试
yufuu9826 分钟前
Python在金融科技(FinTech)中的应用
jvm·数据库·python
如果你想拥有什么先让自己配得上拥有27 分钟前
斐波那契黄金分割自然界演化以及金融上的共振?
算法·金融
灰色小旋风30 分钟前
力扣第1题:两数之和(C++)
c++·算法
电饭叔31 分钟前
GUI by Python 6 一段 gui 代码分析
开发语言·python
OnYoung31 分钟前
持续集成/持续部署(CI/CD) for Python
jvm·数据库·python