leetcode 310. 最小高度树 【时间击败70.67%】 【内存击败89.04%】
数组替代队列,从超时到击败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%】相关推荐
- LeetCode 310. 最小高度树(图 聪明的BFS,从外向内包围)
文章目录 1. 题目 2. 解题 2.1 暴力BFS 2.2 聪明的BFS 1. 题目 对于一个具有树特征的无向图,我们可选择任何一个节点作为根.图因此可以成为树,在所有可能的树中,具有最小高度的树被 ...
- LeetCode 310 最小高度树
题目描述 树是一个无向图,其中任何两个顶点只通过一条路径连接. 换句话说,一个任何没有简单环路的连通图都是一 棵树.给你一棵包含 n 个节点的数,标记为 0 到 n - 1 .给定数字 n 和一个有 ...
- LeetCode 310. 最小高度树(广度优先遍历)
题目描述 对于一个具有树特征的无向图,我们可选择任何一个节点作为根.图因此可以成为树,在所有可能的树中,具有最小高度的树被称为最小高度树.给出这样的一个图,写出一个函数找到所有的最小高度树并返回他们的 ...
- 310. 最小高度树
链接:https://leetcode-cn.com/problems/minimum-height-trees/ 题解:https://leetcode-cn.com/problems/minimu ...
- leetcode 310. Minimum Height Trees | 310. 最小高度树(图的邻接矩阵DFS / 拓扑排序)
题目 https://leetcode.com/problems/minimum-height-trees/ 题解 方法1:图的邻接矩阵 DFS(超时) 我一想,这不就是个图嘛,于是随手敲出一个 DF ...
- 2022-3-20 Leetcode 0402.最小高度树
左右平衡的二叉搜索树是最小的.也就是说树的左右两边的节点个数相当. class Solution {private: TreeNode* dfs(vector<int>&nums, ...
- 310. 最小高度树(Medium)
BFS解法 # 拓扑排序(因为是无向图,所以最中间的节点便是高度最小树的根节点),思路: # 从边缘开始,先找到所有出度为1的节点,然后把所有出度为1的节点进队列,然后不断地bfs, # 最后找到的就 ...
- 二叉搜索树-创建最小高度树(递归)
题意: 给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树. 这里回忆一下二叉搜索树的概念: 对于树中的所有子树都有,左子树上的值都小于根节点的值,右子树上的值 ...
- 【数据结构与算法】之深入解析“最小高度树”的求解思路与算法示例
一.题目要求 树是一个无向图,其中任何两个顶点只通过一条路径连接.换句话说,一个任何没有简单环路的连通图都是一棵树. 给你一棵包含 n 个节点的树,标记为 0 到 n - 1,给定数字 n 和一个有 ...
最新文章
- 博途上载hmi程序_西门子HMI触摸屏(精智面板)恢复出厂设置方法
- 【译文】领域模型的五个特征
- php 渐变色,段落每行渐变色文本效果
- 《Reids 设计与实现》第二章 字典
- 活动目录数据库重定向或迁移
- 《统计学习方法》读书笔记
- Wavegrove Maji+ for Mac - 饱和压缩器插件
- OCRKit Pro for mac (OCR文字识别工具)
- Unity 阴影的制作方式
- VS2015安装教程
- win7安装后计算机不在桌面,win7重装系统后进不了桌面的解决措施
- vue 日程表组件_vue 会议日程列表
- U盘插入电脑有声音,无盘符,只显示安全删除硬件并弹出媒体
- Ajax选项卡、隔行换色、弹出遮罩层…
- 百度地图API和高德地图API资料集锦
- 年终盘点一 | 云原生的 2022 年:降本提效、全面 Serverless 化
- 内网渗透的域控制命令
- ByteTrack论文解读
- python项目实战——银行取款机系统(六)
- matlab数米粒实验报告,文化学习上机实验中遇到的一些Matlab函数.ppt