算法练习Day28 (Leetcode/Python-贪心算法)

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 nwith 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。

python 复制代码
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)
相关推荐
yoke菜籽4 分钟前
面试150——字典树
面试·职场和发展
黑岚樱梦16 分钟前
代码随想录打卡day23:435.无重叠区间
算法
Kuo-Teng37 分钟前
Leetcode438. 找到字符串中所有字母异位词
java·算法·leetcode
gihigo19981 小时前
MATLAB使用遗传算法解决车间资源分配动态调度问题
算法·matlab
墨染点香2 小时前
LeetCode 刷题【138. 随机链表的复制】
算法·leetcode·链表
却道天凉_好个秋2 小时前
目标检测算法与原理(一):迁移学习
算法·目标检测·迁移学习
兮山与3 小时前
算法24.0
算法
晓北斗NorSnow3 小时前
机器学习核心算法与学习资源解析
学习·算法·机器学习