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

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

以下是 LeetCode 2538 的 Go 实现,思路与 Java 版本一致,采用树形 DP 一次 DFS 完成。

Go 实现

func maxOutput(n int, edges [][]int, price []int) int64 {
// 建图
g := make([][]int, n)
for _, e := range edges {
u, v := e[0], e[1]
g[u] = append(g[u], v)
g[v] = append(g[v], u)
}

var ans int64

// dfs 返回 [包含叶子的最大路径和, 不包含叶子的最大路径和]
var dfs func(x, fa int) (int64, int64)
dfs = func(x, fa int) (int64, int64) {
p := int64(price[x])
maxS1 := p // 包含叶子:初始化为自身
maxS2 := int64(0) // 不包含叶子:初始化为0

for _, y := range g[x] {
if y == fa {
continue
}
s1, s2 := dfs(y, x)

// 用当前节点作为两条路径的交汇点,组合更新答案
if maxS1 + s2 > ans {
ans = maxS1 + s2
}
if maxS2 + s1 > ans {
ans = maxS2 + s1
}

// 更新当前节点的两个状态
if s1 + p > maxS1 {
maxS1 = s1 + p
}
if s2 + p > maxS2 {
maxS2 = s2 + p
}
}
return maxS1, maxS2
}

dfs(0, -1)
return ans
}

代码说明

1. 建图:用邻接表 g 存储树结构
2. DFS 返回值:
- maxS1:从当前节点出发,到某个叶子节点的最大路径和(包含叶子节点)
- maxS2:从当前节点出发,到某个非叶子节点的最大路径和(不包含叶子节点)
3. 更新答案:遍历子节点时,用已遍历的最大值与当前子节点的值组合:
- maxS1 + s2:一条路径包含叶子,另一条不包含
- maxS2 + s1:一条路径不包含叶子,另一条包含
4. 更新状态:用子节点的结果加上当前节点价值,更新 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:
n = 3, edges = [[0,1],[1,2]], price = [1,1,1]
输出:2

两个示例均能正确输出。

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

相关文章:

  • 如何构建一个健康的学术生态
  • Apache 2.4 版本如何启用 TLS 1.3 并配置 SSL 证书路径
  • 别再混用 Skill 和 Workflow:它俩不是一层东西
  • 耿同学正在推动中国科技进步
  • 【多通道滤波】基于最小均方(McFxLMS)算法用于自适应多通道有源噪声控制(MCANC)应用研究(Matlab代码实现)
  • 国产大模型2026年领跑全球AI榜单
  • VS Code配置Python开发环境
  • WorkBuddy案例——自动化内容创作平台
  • V1.3-Open发布:构建这个极简单文件空间管理面板背后的故事与哲学
  • 2026年5月更新:河北扩张网生产厂家的专业选择指南 - 2026年企业推荐榜
  • AI时代,传统的教育系统正在被撕碎
  • 多租户AI平台设计:权限隔离、数据隔离与计费隔离工程实现
  • 《CVPR2025-DEIM创新改进项目实战:从原理到部署的深度学习优化全攻略》016、DEIM在图像分类任务上的改进——ResNet-DEIM与ViT-DEIM
  • 千问 LeetCode 2543. 判断一个点是否可以到达 C语言实现
  • torchtitan-npu:大模型训练框架快速上手实战
  • 野兽派不是乱来:拆解Midjourney V6中色彩暴力、笔触失序与构图反叛的5层参数逻辑
  • 双波长离轴共路数字全息测量关键技术【附代码】
  • 世界模型的本质还是人机环境系统智能
  • 2026AMERIDRIVE离合器授权服务商推荐名录及参数对比:BPRT、FORMSPRAG、MARLAND、ROLLWAY选择指南 - 优质品牌商家
  • 豆包 LeetCode 2543. 判断一个点是否可以到达 Java实现
  • 户外门禁怕淋雨?这款灌胶防雨双频门禁好像还不错哦!
  • Agentic Search能替代GraphRAG吗,结论清晰了
  • 2026年5月更新:儿童山地自行车生产厂家综合推荐与深度解析 - 2026年企业推荐榜
  • 写给前端的 CANN-GraphCompiler:昇腾图编译器到底是啥?
  • ElevenLabs荷兰文语音生成速度对比实测:从4.2s→0.8s的WebSocket流式优化路径(附可复用代码片段)
  • 选C盘清理厂商不是看名气,是看这5步决策逻辑
  • 《CVPR2025-DEIM创新改进项目实战:从原理到部署的深度学习优化全攻略》017、YOLO-DEIM与DETR-DEIM的调试手记
  • [模型解析] Claude 4: 技术架构与能力评测
  • PHP - PHP 简易 Web 服务器、基础接口开发
  • 将数据从 OPPO 传输到 iPhone 的 4 个有效方案