代码随想录|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))
相关推荐
我的运维人生5 分钟前
Python技术深度探索:从基础到进阶的实践之旅(第一篇)
开发语言·python·运维开发·技术共享
Bonne journée6 分钟前
‌在Python中,print(f‘‘)是什么?
java·开发语言·python
秋夜Autumn21 分钟前
贪心算法相关知识
算法·贪心算法
iiimZoey30 分钟前
Dit架构 diffusion范式分类+应用
人工智能·python
R三哥哥啊32 分钟前
【树莓派5B】IO串口通信使用
python
小懒编程日记33 分钟前
【数据结构与算法】B树
java·数据结构·b树·算法
Beginner_bml38 分钟前
C语言---链表
c语言·数据结构
心怀花木40 分钟前
【算法】双指针
c++·算法
闫铁娃42 分钟前
二分解题的奇技淫巧都有哪些,你还不会吗?
c语言·数据结构·c++·算法·leetcode
Y_3_744 分钟前
【回溯数独】有效的数独(medium)& 解数独(hard)
java·数据结构·windows·算法·dfs·回溯