当前位置: 首页 > news >正文

千问 LeetCode 2538. 最大价值和与最小价值和的差值 Java实现

这道题是LeetCode 2538,核心思路是树形DP,通过一次DFS遍历,同时维护两个状态来求解最大差值。

问题分析

给定一棵树,每个节点有 price[i]。我们可以选择任意节点作为根 root,定义“开销”为:以 root 为起点的所有路径中,最大路径和与最小路径和的差值。

由于所有节点价值均为正数,最小路径和一定是只包含根节点自身(即路径长度为1),所以问题转化为:

对于每个节点作为根,求从它出发到某个叶子节点的最大路径和,减去它自身的价值,取所有节点中的最大值。

进一步等价于:求树中一条路径(两端都是叶子节点)的总和,减去其中一个叶子节点的价值,得到的最大值。

核心思路(树形DP)

DFS返回两个值:
- maxS1:从当前节点出发,包含叶子节点的最大路径和(即路径终点是叶子)
- maxS2:从当前节点出发,不包含叶子节点的最大路径和(即路径终点是非叶子节点)

对于每个节点,遍历其子节点时,用已遍历的最大值与当前子节点的值组合,更新全局答案:

ans = max(ans, maxS1 + child.maxS2, maxS2 + child.maxS1)

然后更新当前节点的两个状态:
maxS1 = max(maxS1, child.maxS1 + price[cur])
maxS2 = max(maxS2, child.maxS2 + price[cur])

Java实现

class Solution {
private List<Integer>[] g;
private int[] price;
private long ans;

public long maxOutput(int n, int[][] edges, int[] price) {
this.price = price;
g = new ArrayList[n];
Arrays.setAll(g, e -> new ArrayList<>());
for (int[] e : edges) {
int x = e[0], y = e[1];
g[x].add(y);
g[y].add(x);
}
dfs(0, -1);
return ans;
}

// 返回 [包含叶子的最大路径和, 不包含叶子的最大路径和]
private long[] dfs(int x, int fa) {
long p = price[x];
long maxS1 = p; // 包含叶子:初始化为自身
long maxS2 = 0; // 不包含叶子:初始化为0(叶子节点本身不算)

for (int y : g[x]) {
if (y == fa) continue;
long[] child = dfs(y, x);
long s1 = child[0], s2 = child[1];

// 用当前节点作为两条路径的交汇点,组合更新答案
ans = Math.max(ans, Math.max(maxS1 + s2, maxS2 + s1));

// 更新当前节点的两个状态
maxS1 = Math.max(maxS1, s1 + p);
maxS2 = Math.max(maxS2, s2 + p);
}
return new long[]{maxS1, maxS2};
}
}

复杂度分析

- 时间复杂度:O(n),每个节点只遍历一次
- 空间复杂度:O(n),邻接表和递归栈空间

示例验证

示例1:
n = 6, edges = [[0,1],[1,2],[1,3],[3,4],[3,5]], price = [9,8,7,6,10,5]
输出:24

路径 [2,1,3,4] 价值和为 31,减去叶子节点 2 的价值 7,得 24。

示例2:
n = 3, edges = [[0,1],[1,2]], price = [1,1,1]
输出:2

路径 [0,1,2] 价值和为 3,减去叶子节点 0 的价值 1,得 2。

关键点总结

1. 由于所有价值为正,最小路径就是根节点自身,所以问题简化为最大路径和减去一个端点价值
2. 用树形DP维护包含叶子和不包含叶子两种路径的最大和
3. 在遍历子节点时,用已遍历部分与当前子节点组合更新答案,避免重复计算

http://www.jsqmd.com/news/861913/

相关文章:

  • MoE混合专家架构:大模型高效推理的核心原理与工程实践
  • 功率电感选型深度指南:从DC-DC纹波控制到饱和电流与EMI优化
  • 第六章 投票系统项目设计与架构规划
  • 大模型MoE架构揭秘:如何用2%参数实现万亿级算力调度
  • 工业级时间序列预测:从股票预测到电力、交通、设备、零售四大落地场景
  • 论文查重与 AI 痕迹双焦虑?okbiye 降重 + 降 AIGC 功能,一键解决毕业季两大难题
  • GPT-4稀疏激活原理:1.8万亿参数如何实现2%高效计算
  • 2026绵阳中高端板材厂家权威排行:多功能海洋板/多功能海洋板厂家/实木板材/实木颗粒板厂家/五大头部品牌盘点 - 优质品牌商家
  • Scikit-Learn特征选择三大范式实战:过滤/包裹/嵌入法落地要点
  • Mythos架构解析:大模型可验证推理与责任门控机制
  • 24 鸿蒙LiteOS GPIO中断实战:从原理到上升沿/下降沿详解
  • Mythos能力解析:大模型可验证推理与Gated Release机制
  • AI代理运行时基础设施:告别上下文溢出与不可靠执行
  • 2026年成都999:自贡眼镜、自贡配眼镜、乐山眼镜、乐山配眼镜、南充眼镜、南充配眼镜、巴中眼镜、巴中配眼镜、康利眼镜品牌镜框授权选择指南 - 优质品牌商家
  • MADQN实战:在Switch4环境中实现多智能体协同训练
  • 2026年评价高的围墙护栏可靠供应商推荐 - 行业平台推荐
  • AI模型能力受限发布机制解析:Gated Release原理与实践
  • AI工程师的技术信用铸造:从开源贡献到工程验证
  • 18 onenet mqttx 对接 设备 属性 上报 完整测试
  • 2026云南空压机服务商排行:四川,成都,昆明,四川离心空压机/四川英格索兰空压机/成都冷干机/成都寿力空压机/选择指南 - 优质品牌商家
  • AI项目博文写作规范与内容安全准则
  • 机器学习论文有效阅读:三层穿透法定位技术杠杆点
  • 基于LSTM的无人艇波浪方向估计:从时序预测到工程实践
  • 2026年5月餐饮店全屋设计服务商排行及选型参考:餐饮店面装修设计、餐饮空间设计、餐饮设计、餐饮门店装修、饭店装修设计选择指南 - 优质品牌商家
  • AI能力边界与工程落地:从狗级到匠级的七步实战路径
  • 【带RL负载的全波桥式整流器】功能齐全的单相非控整流器附Simulink仿真
  • 音频分类实战:STFT频谱图+EfficientNet迁移学习
  • 机器学习评估指标实战指南:业务、数据与工程的决策逻辑
  • 小组三
  • 大模型不是AGI:从统计拟合到具身认知的智能跃迁