记录:Leetcode124

这是一道 hard 题,但是看到题到了解到思路仅用了 5 分钟,然而最后调试以及修改枝叶错误画了半个小时。总之做出来了,开心。。。


题目描述

在这里插入图片描述

思路分析

以下图是我一开始的思路。我的想法是,对于一个简单二叉树,所有情况无非就是:root,(root,left),(root,left,right),(root,right)
那么从子树开始,从下至上递归,求得每个简单二叉树能够起到的最大作用传上去。
当然,还有两种情况没考虑,那就是单独的(left)(right)
这两种情况是不能够传上去的。
(当然不止,但由于太菜第一思路没想那么多)

在这里插入图片描述

然后出现了错误,错例是一个仅有根节点,且根节点为-3 的树。原因就在于,当 root 等于 null 时,我返回的是 0,因此最大值被确认为 0。所以,当 root 等于 null 时,应当返回负无穷。

好了,这个错误跨过去之后,就是下一个错误。错误的测例为:
在这里插入图片描述
然后仔细观察就能发现,其实当一个简单二叉树的三个节点全部选中之后,它是不能继续往上走的。

在这里插入图片描述
所以不能继续往上走的有三种:
(left), (right), (root, left, right)

能继续往上走的有三种:
(root, left), (root, right), (root)

思路说完了,上代码:

public class Solution1 {
    private int max = Integer.MIN_VALUE;

    public int maxPathSum(TreeNode root) {
        helper(root);
        return max;

    }

    public int helper(TreeNode root) {
        if (root == null) return Integer.MIN_VALUE;
        int[] cases = new int[6];
        int max_r = Integer.MIN_VALUE;
        int left = helper(root.left);
        int right = helper(root.right);
        cases[0] = left == Integer.MIN_VALUE ? Integer.MIN_VALUE : left + root.val;
        cases[1] = right == Integer.MIN_VALUE ? Integer.MIN_VALUE : right + root.val;
        cases[2] = root.val;

        cases[3] = left;
        cases[4] = right;
        cases[5] = (left == Integer.MIN_VALUE || right == Integer.MIN_VALUE) ? Integer.MIN_VALUE : left + right + root.val;
        for (int i = 0; i < 6; ++i) {
            if (cases[i] > max) {
                max = cases[i];
            }
            if (i < 3) {
                if (cases[i] > max_r) {
                    max_r = cases[i];
                }
            }
        }
        return max_r;

    }
}
### C2PSAYOLO11的技术解析 #### YOLO11架构改进概述 YOLO11引入了多项创新来提升模型性能,特别是通过对Backbone和Neck部分的设计优化。新增加的C3k2以及C2PSA模块显著增强了特征提取能力[^2]。 #### C2PSA详解 C2PSA(Combined Pointwise Spatial Attention)是一种融合空间注意机制的方法,旨在加强神经网络中的特征表示学习过程。该方法利用Pointwise Spatial Attention(PSA)块,在不增加过多计算成本的情况下提升了局部区域的重要性感知力。具体来说,C2PSA能够更精准地捕捉到目标物体的关键部位信息,从而提高检测精度[^1]。 #### 实现细节 为了更好地理解如何在实践中应用这些新技术,下面给出一段简化版Python伪代码展示如何集成C2PSA至卷积层: ```python import torch.nn as nn class ConvWithC2PSA(nn.Module): def __init__(self, in_channels, out_channels): super(ConvWithC2PSA, self).__init__() # 定义标准卷积操作 self.conv = nn.Conv2d(in_channels=in_channels, out_channels=out_channels, kernel_size=3, stride=1, padding=1) # 添加C2PSA模块 self.c2psa = PSA(out_channels) def forward(self, x): conv_out = self.conv(x) psa_out = self.c2psa(conv_out) return psa_out def PSA(channels): """定义PSA功能""" pass # 这里省略实际实现逻辑 ``` 此段代码展示了如何创建一个带有C2PSA特性的自定义卷积类`ConvWithC2PSA`,其中包含了基础卷积运算及其后的PSA处理流程。需要注意的是,真正的PSA函数内部还需要进一步开发以适应特定应用场景的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值