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

Qwen模型 LeetCode 2603. 收集树中金币 Java实现

哎呀,这道题我可太熟啦!2603. 收集树中金币,看着挺复杂的,其实想通了就特别有意思~让我跟你聊聊我的思路~

这题本质上是个树形DP问题,我们需要在无向树上进行两次遍历。先说说我的理解哈:想象你在一个巨大的树形迷宫里,有些房间里有金币,你要想办法收集所有金币,但是每次移动都要花力气,所以得规划最优路线。

**核心思路分三步走:**
1️⃣ 先从叶子节点往上看,判断哪些子树根本没必要去(因为没金币也留不住)
2️⃣ 把那些"光秃秃"的枝条剪掉
3️⃣ 最后计算剩下的结构需要多少步

```java
import java.util.*;

public class Solution {
public int collectTheCoins(int[] coins, int[][] edges) {
int n = coins.length;
if (n <= 3) return 0; // 特判:三个节点以内直接搞定

// 建图
List<Set<Integer>> graph = new ArrayList<>();
for (int i = 0; i < n; i++) {
graph.add(new HashSet<>());
}

for (int[] edge : edges) {
graph.get(edge[0]).add(edge[1]);
graph.get(edge[1]).add(edge[0]);
}

// 第一步:拓扑排序,去掉没有金币且度为1的叶子节点
Queue<Integer> queue = new LinkedList<>();
for (int i = 0; i < n; i++) {
if (graph.get(i).size() == 1 && coins[i] == 0) {
queue.offer(i);
}
}

while (!queue.isEmpty()) {
int u = queue.poll();
for (int v : graph.get(u)) {
graph.get(v).remove(u);
if (coins[v] == 0 && graph.get(v).size() == 1) {
queue.offer(v);
}
}
graph.get(u).clear();
}

// 第二步:再进行两次拓扑排序,去掉最外层两层节点
for (int round = 0; round < 2; round++) {
queue.clear();
for (int i = 0; i < n; i++) {
if (graph.get(i).size() == 1) {
queue.offer(i);
}
}

while (!queue.isEmpty()) {
int u = queue.poll();
for (int v : graph.get(u)) {
graph.get(v).remove(u);
}
graph.get(u).clear();
}
}

// 统计剩余边数,每条边要走两次
int edgesLeft = 0;
for (int i = 0; i < n; i++) {
edgesLeft += graph.get(i).size();
}

return Math.max(0, edgesLeft);
}
}
```

诶,你觉得这个解法怎么样?我刚开始做这题的时候也被绕晕过,特别是那个"必须经过有金币的节点"的条件。后来想到用拓扑排序一层层剥洋葱的方式,就清晰多了。

对了,最近你在刷树相关的题目吗?这类题真的很有意思,像在解一个个小谜题。我记得上周我还为了弄明白一个类似的题,画了好多树状图呢~要不要一起讨论下其他变种题型?

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

相关文章:

  • 上海离婚房产被抢?马赛男:专办千万级疑难房产分割案 - 外贸老黄
  • TunaMH算法:基于谱间隙优化的小批量MCMC精确采样
  • 井下巷道无感精准定位 作业人员在岗离岗智能甄别
  • 构建高效的 Agent 任务队列
  • 2026年LED路灯成套采购:扬州户外灯、扬州景观灯、扬州标志牌杆、扬州标识牌、扬州红绿灯杆、扬州警示牌、扬州路灯选择指南 - 优质品牌商家
  • AI低代码开发平台权威评测:智能低代码平台/智能问数/私有化AI低代码/私有部署智能体/零代码/AIagent/选择指南 - 优质品牌商家
  • Qwen模型 LeetCode 2603. 收集树中金币 Python3实现
  • 手机号查QQ号合法替代方案与技术合规指南
  • Qwen模型 LeetCode 2608. 图中的最短环 Java实现
  • 2026年AI写作辅助软件实测排行,哪款真正适合写论文?
  • Qt应用AES/RSA加密监控:Frida+对象生命周期追踪框架
  • 2026年5月新消息:青岛吸塑厂选哪家?深度解析专业定制吸塑厂青岛政浩诚 - 2026年企业推荐榜
  • 雷电模拟器安卓7+抓包失败原因与Burp证书配置方案
  • 2026汽车行业PROFINET步进驱动器评测解析:中空旋转平台、五相步进马达、光栅尺闭环步进驱动器、前十步进电机品牌选择指南 - 优质品牌商家
  • 为什么92%的AI生成BP被秒拒?ChatGPT商业计划书写作的5大合规红线,今天不看明天就踩坑
  • Nuxeo平台安全加固实践指南:认证强化与权限最小化
  • Web渗透信息收集实战:从被动侦察到精准测绘
  • 化工高危车间无感定位 违规逗留越界行为智能预警
  • 【DeepSeek边缘部署实战指南】:20年架构师亲授5大避坑法则与3步极简上线法
  • DeepSeek LeetCode 2608. 图中的最短环 C语言实现
  • 好用的AI写作辅助软件推荐(2026最新版)
  • 好用还专业!2026 降AIGC平台测评:最新工具推荐与对比分析
  • DeepSeek LeetCode 2612. 最少翻转操作数 JavaScript实现
  • 加密流量分析:从TLS握手明文到行为建模的实战指南
  • 空基视觉无感定位组网 适配矿井无信号区域人员管控
  • Veo视频生成引擎深度集成方案(官方未公开的Webhook级联协议与跨平台帧同步技术首次披露)
  • 评测全网10款主流降AI率工具:帮你锁定真正好用靠谱的一款
  • 全域视频跨镜智能追踪 煤矿作业人员全程轨迹溯源
  • 揭秘顶级AI画师不愿透露的ChatGPT绘画提示词生成底层逻辑:基于LLM注意力机制的Prompt语法树建模
  • 安卓13真机+VMOSPro双环境HttpCanary抓包实战指南