算法练习Day28 (Leetcode/Python-贪心算法)
2024-01-08 18:39:53
738. Monotone Increasing Digits
An integer has?monotone increasing digits?if and only if each pair of adjacent digits?x
?and?y
?satisfy?x <= y
.
Given an integer?n
, return?the largest number that is less than or equal to?n
?with?monotone increasing digits.
Example 1:
Input: n = 10 Output: 9
Example 2:
Input: n = 1234 Output: 1234
Example 3:
Input: n = 332 Output: 299
思路,此题求小于给定的数值N的最大的单调递增序列。对于每个数位,从后向前遍历,但凡发现前一位N[i-1]比后一位N[i]大,能做的就是把后一位N[i]置9,前一位置N[i-1]-1。
class Solution(object):
def monotoneIncreasingDigits(self, n):
"""
:type n: int
:rtype: int
"""
# convert int to string
strNum = str(n)
flag = len(strNum)
for i in range(len(strNum)-1, 0, -1):
if strNum[i] < strNum[i-1]:
flag = i
strNum = strNum[:i-1] + str(int(strNum[i-1])-1) + strNum[i:]
#for i in range(flag, len(strNum)):
print(flag)
strNum = strNum[:flag] + '9' * len( strNum[flag:])
return int(strNum)
文章来源:https://blog.csdn.net/m0_54919454/article/details/135411832
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!