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%】的更多相关文章
- Java实现 LeetCode 310 最小高度树
310. 最小高度树 对于一个具有树特征的无向图,我们可选择任何一个节点作为根.图因此可以成为树,在所有可能的树中,具有最小高度的树被称为最小高度树.给出这样的一个图,写出一个函数找到所有的最小高度树 ...
- leetcode.310最小高度树
对于一个具有树特征的无向图,我们可选择任何一个节点作为根.图因此可以成为树,在所有可能的树中,具有最小高度的树被称为最小高度树.给出这样的一个图,写出一个函数找到所有的最小高度树并返回他们的根节点. ...
- Leetcode 310.最小高度树
最小高度树 对于一个具有树特征的无向图,我们可选择任何一个节点作为根.图因此可以成为树,在所有可能的树中,具有最小高度的树被称为最小高度树.给出这样的一个图,写出一个函数找到所有的最小高度树并返回他们 ...
- [LeetCode] Minimum Height Trees 最小高度树
For a undirected graph with tree characteristics, we can choose any node as the root. The result gra ...
- [Swift]LeetCode310. 最小高度树 | Minimum Height Trees
For an undirected graph with tree characteristics, we can choose any node as the root. The result gr ...
- 最小高度树Java版本(力扣)
最小高度树 给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树. 示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10, ...
- [LeetCode] 310. Minimum Height Trees 最小高度树
For a undirected graph with tree characteristics, we can choose any node as the root. The result gra ...
- 最小高度的树 Minimum Height Trees
2018-09-24 12:01:38 问题描述: 问题求解: 毫无疑问的一条非常好的题目,采用的解法是逆向的BFS,也就是从叶子节点开始遍历,逐步向中心靠拢,最终留下的叶子节点就是答案. publi ...
- [LeetCode] 310. Minimum Height Trees 解题思路
For a undirected graph with tree characteristics, we can choose any node as the root. The result gra ...
- 九度oj 题目1536:树的最小高度
题目描述: 给定一棵无向树, 我们选择不同的节点作为根节点时,可以得到不同的高度(即树根节点到叶子节点距离的最大值), 现在求这棵树可能的最低高度. 输入: 输入可能包含多个测试案例. 对于每个测试案 ...
随机推荐
- CentOS6.8安装docker教程
在VMware新安装CentOS6.8系统 CentOS6.8可在阿里镜像库下载: https://mirrors.aliyun.com/centos-vault/6.8/isos/x86_64/ 在 ...
- Vue2.0 双向绑定的原理与缺陷?
原理 Object.defineProperty.getter.setter 标准回答 Vue响应式指的是:组件的data发生变化,立刻触发试图的更新 原理:Vue采用数据劫持结合发布者-订阅者模式的 ...
- canvas 学习笔记
1.利用上下文对象进行绘制画笔 var canvas=canvas.getContext('2d') 2.绘制路径 canvas.rect(30,30,300,300) 3.填充 canvas.fil ...
- CentOS 7.9 环境下添加拥有 sudo 权限的用户
# 以root权限执行以下操作 # 添加用户 useradd vbird # 为用户设置密码 passwd vbird # Changing password for user vbird. # Ne ...
- usbip 非源码安装
对于很多 Linux 发行版不能直接搜索 usbip 的包名进行安装 Kylin OS 其实他是包含在一个名为 linux-tools-generic 的软件包中的 对于 UOS 操作系统可以直接安装 ...
- spider_爬取斗图啦所有表情包(图片保存)
"""爬取斗图吧里面的所有表情包知识点总结: 一.使用requests库进行爬取,随机请求头(网站反爬措施少.挂个请求头足矣) 二.具体思路: 1.先爬取所有的图片url ...
- 对PTA题目集1~3的总结
一.作业总结 这几次的PTA作业主要考察我们对Java语言中的字符串的输入和输出.转换.有关它们的方法的运用和相关的一些运算,还有我们对题目需求的了解和书写代码的规范:其次还有强化我们对"类 ...
- (已解决)用phpstudy8创建个数据库(非root),结果没有访问权限。
1. 问题 用phpstudy_pro,即最新版本,创建非root用户的数据库,然后后台访问它却提示没有权限. 2. 解决办法 进入系统自带的user表,修改权限.具体操作如下: a. 首先找到自己用 ...
- DOS命令操作
打开CMD的方式 1.开始+系统+命令提示符 2.Win键+R 输入CMD打开控制台(推荐使用) 3.在任意的文件夹下面,按住shift+鼠标右键点击,在此处打开命令行窗口 4.资源管理器的地址栏前面 ...
- ES实战-trying to create too many buckets
场景 es查询报错,报错如下: trying to create too many buckets. must be less than or equal to: [10000] but was [1 ...