代码随想录算法训练营第37天 | 738.单调递增的数字 + 贪心算法总结

今日任务

目录

738.单调递增的数字 - Medium

968.监控二叉树 - Hard (跳过)

贪心算法总结


738.单调递增的数字 - Medium

题目链接:力扣-738. 单调递增的数字

当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。

给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈 单调递增 。

提示:出现strNum[i - 1] > strNum[i]的情况(非单调递增),首先想让strNum[i - 1]--,然后strNum[i]及后面的位置全部变为9;遍历顺序从后往前遍历

class Solution:
    def monotoneIncreasingDigits(self, n: int) -> int:
        strn = [int(x) for x in str(n)]
        for i in range(len(strn)-1, 0, -1):
            if strn[i] < strn[i-1]:
                strn[i-1] -= 1
                for j in range(i, len(strn)):
                    strn[j] = 9
        result = 0
        for i in range(len(strn)):
            result += strn[i] * 10 ** (len(strn)-1-i)
        return result

968.监控二叉树 - Hard (跳过)

题目链接:力扣-968. 监控二叉树

给定一个二叉树,我们在树的节点上安装摄像头。

节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。

计算监控树的所有节点所需的最小摄像头数量。

贪心算法总结

总结:代码随想录 

在做贪心题的过程中,如果再来一个数据证明,其实没有必要,手动模拟一下,如果找不出反例,就试试贪心。面试中,代码写出来跑过测试用例即可,或者自己能自圆其说理由就行

判断一道题目是贪心的依据,如果找不出局部最优,那可能就是一道模拟题

你可能感兴趣的:(LeetCode,leetcode,python,贪心算法)