数组替代队列,从超时到击败70%,用tree[0]替代new一个新的ArrayList,上升10%

思想是遍历一遍,删除度为1的节点,答案只可能为1或2

 1 public List<Integer> findMinHeightTrees(int n, int[][] edges) {
 2         ArrayList<Integer>[] tree = new ArrayList[n];
 3         for (int i = 0; i < n; i++) tree[i] = new ArrayList<>();
 4         for (int i = 0; i < edges.length; i++) {
 5             int a = edges[i][0], b = edges[i][1];
 6             tree[a].add(b);
 7             tree[b].add(a);
 8         }
 9         int[] valid = new int[n];
10         Arrays.fill(valid, 1);
11         int[] q = new int[n];
12         int len = n;
13         while (len > 2) {
14             q[0] = 0;
15             for (int i = 0; i < n; i++) if (tree[i].size() == 1) q[++q[0]] = i;
16             len -= q[0];
17             for (int j = 1; j <= q[0]; j++) {
18                 int a = q[j], b = tree[a].get(0);
19                 tree[a].clear();
20                 for (int i = 0; i < tree[b].size(); i++) {
21                     if (tree[b].get(i) == a) {
22                         tree[b].remove(i);
23                         break;
24                     }
25                 }
26                 valid[a] = 0;
27             }
28         }
29         tree[0].clear();
30         for (int i = 0; i < n; i++) if (valid[i] == 1) tree[0].add(i);
31         return tree[0];
32     }

leetcode 310. 最小高度树 【时间击败70.67%】 【内存击败89.04%】相关推荐

  1. LeetCode 310. 最小高度树(图 聪明的BFS,从外向内包围)

    文章目录 1. 题目 2. 解题 2.1 暴力BFS 2.2 聪明的BFS 1. 题目 对于一个具有树特征的无向图,我们可选择任何一个节点作为根.图因此可以成为树,在所有可能的树中,具有最小高度的树被 ...

  2. LeetCode 310 最小高度树

    题目描述 树是一个无向图,其中任何两个顶点只通过一条路径连接. 换句话说,一个任何没有简单环路的连通图都是一 棵树.给你一棵包含 n 个节点的数,标记为 0 到 n - 1 .给定数字 n 和一个有 ...

  3. LeetCode 310. 最小高度树(广度优先遍历)

    题目描述 对于一个具有树特征的无向图,我们可选择任何一个节点作为根.图因此可以成为树,在所有可能的树中,具有最小高度的树被称为最小高度树.给出这样的一个图,写出一个函数找到所有的最小高度树并返回他们的 ...

  4. 310. 最小高度树

    链接:https://leetcode-cn.com/problems/minimum-height-trees/ 题解:https://leetcode-cn.com/problems/minimu ...

  5. leetcode 310. Minimum Height Trees | 310. 最小高度树(图的邻接矩阵DFS / 拓扑排序)

    题目 https://leetcode.com/problems/minimum-height-trees/ 题解 方法1:图的邻接矩阵 DFS(超时) 我一想,这不就是个图嘛,于是随手敲出一个 DF ...

  6. 2022-3-20 Leetcode 0402.最小高度树

    左右平衡的二叉搜索树是最小的.也就是说树的左右两边的节点个数相当. class Solution {private: TreeNode* dfs(vector<int>&nums, ...

  7. 310. 最小高度树(Medium)

    BFS解法 # 拓扑排序(因为是无向图,所以最中间的节点便是高度最小树的根节点),思路: # 从边缘开始,先找到所有出度为1的节点,然后把所有出度为1的节点进队列,然后不断地bfs, # 最后找到的就 ...

  8. 二叉搜索树-创建最小高度树(递归)

    题意: 给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树. 这里回忆一下二叉搜索树的概念: 对于树中的所有子树都有,左子树上的值都小于根节点的值,右子树上的值 ...

  9. 【数据结构与算法】之深入解析“最小高度树”的求解思路与算法示例

    一.题目要求 树是一个无向图,其中任何两个顶点只通过一条路径连接.换句话说,一个任何没有简单环路的连通图都是一棵树. 给你一棵包含 n 个节点的树,标记为 0 到 n - 1,给定数字 n 和一个有 ...

最新文章

  1. 博途上载hmi程序_西门子HMI触摸屏(精智面板)恢复出厂设置方法
  2. 【译文】领域模型的五个特征
  3. php 渐变色,段落每行渐变色文本效果
  4. 《Reids 设计与实现》第二章 字典
  5. 活动目录数据库重定向或迁移
  6. 《统计学习方法》读书笔记
  7. Wavegrove Maji+ for Mac - 饱和压缩器插件
  8. OCRKit Pro for mac (OCR文字识别工具)
  9. Unity 阴影的制作方式
  10. VS2015安装教程
  11. win7安装后计算机不在桌面,win7重装系统后进不了桌面的解决措施
  12. vue 日程表组件_vue 会议日程列表
  13. U盘插入电脑有声音,无盘符,只显示安全删除硬件并弹出媒体
  14. Ajax选项卡、隔行换色、弹出遮罩层…
  15. 百度地图API和高德地图API资料集锦
  16. 年终盘点一 | 云原生的 2022 年:降本提效、全面 Serverless 化
  17. 内网渗透的域控制命令
  18. ByteTrack论文解读
  19. python项目实战——银行取款机系统(六)
  20. matlab数米粒实验报告,文化学习上机实验中遇到的一些Matlab函数.ppt

热门文章

  1. USB Type-C集线器ODM厂商连接美好生活
  2. Spring Cloud Hystrix熔断机制原理剖析
  3. 用C++设计一个Bank类,实现银行某账户的资金往来账目管理。
  4. 无刷电机驱动器设计中开环、速度环、电流环
  5. 致辞:让正念融入我们的生活
  6. Flink实战问题(一):Unable to create a sink for writing table
  7. OneAPM使用笔记 BI应用性能管理
  8. 使用函数的选择法排序
  9. day21:前程贷项目
  10. Win10以最高管理员身份运行程序的方法总结