代码随想训练营第三十七天(Python)| 738.单调递增的数字、968.监控二叉树

738.单调递增的数字

class Solution:
    def monotoneIncreasingDigits(self, n: int) -> int:
        # 主要思路当前数字比前面数字小时。前面数字 -1,当前数字变29
        str_n = str(n)
        for i in range(len(str_n)-1, 0, -1):
            if str_n[i] < str_n[i-1]:
                str_n = str_n[:i-1] + str(int(str_n[i-1]) - 1) + len(str_n[i:]) * "9"
        return int(str_n)

968.监控二叉树

class Solution:
    def minCameraCover(self, root: Optional[TreeNode]) -> int:
        # 0 代表无覆盖
        # 1 代表有摄像头
        # 2 代表有覆盖
        self.res = 0
        if self.travesal(root) == 0:
            self.res += 1
        return self.res

    def travesal(self, cur):
        if not cur:
            return 2

        # 左
        left = self.travesal(cur.left)
        # 右
        right = self.travesal(cur.right)

        # 分析当前节点的状态
        # 中
        # 左右都被覆盖
        if left == 2 and right == 2:
            return 0

        # 左或者右有一个没有被覆盖
        if left == 0 or right == 0:
            self.res += 1
            return 1

        # 左或者右右摄像头
        if left == 1 or right == 1:
            return 2
posted @   忆象峰飞  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示