Leetcode 310. Minimum Height Trees
来源:互联网 发布:js提示return非法 编辑:程序博客网 时间:2024/04/30 15:33
Leetcode 310. Minimum Height Trees
这个解法思路很巧妙:
从最简单地开始:如果是一个list,从两端采用双指针的方法,当两个指针相遇或间隔为1时返回。
如果是一个树的话,则从度为1的节点(不一定是叶子节点),度为一只需要统计边数就可以了,多个指针向前遍历(宽度优先搜索),直到只剩一个或两个节点,便为所求。
import java.util.ArrayList;import java.util.Collections;import java.util.HashSet;import java.util.List;import java.util.Set;public class Solution {public List<Integer> findMinHeightTrees(int n, int[][] edges) { if(n==1) return Collections.singletonList(0); List<Set<Integer>> graph = new ArrayList<Set<Integer>>(); for(int i=0;i<n;i++) graph.add(new HashSet<Integer>()); for(int[] edge:edges){ graph.get(edge[0]).add(edge[1]); graph.get(edge[1]).add(edge[0]); } List<Integer> leaves = new ArrayList<Integer>(); for(int i=0;i<n;i++){ if(graph.get(i).size()==1) leaves.add(i); } while(n>2){ n-=leaves.size(); List<Integer> newleaves = new ArrayList<Integer>(); for(int i :leaves){ int j = graph.get(i).iterator().next(); graph.get(j).remove(i); if(graph.get(j).size()==1) newleaves.add(j); } leaves = newleaves; } return leaves;}}
0 0
- Leetcode 310. Minimum Height Trees
- [leetcode] 310. Minimum Height Trees
- 310. Minimum Height Trees LeetCode
- leetcode 310. Minimum Height Trees
- LeetCode *** 310. Minimum Height Trees
- 【LeetCode】310. Minimum Height Trees
- [leetcode] 310.Minimum Height Trees
- leetcode-310. Minimum Height Trees
- [leetcode] 310. Minimum Height Trees
- 【LeetCode】310. Minimum Height Trees
- LeetCode 310. Minimum Height Trees
- Leetcode 310. Minimum Height Trees
- [LeetCode]310. Minimum Height Trees
- Leetcode: 310.Minimum Height Trees
- 【Leetcode】310. Minimum Height Trees
- LeetCode 310. Minimum Height Trees
- leetcode-310. Minimum Height Trees
- Leetcode 310. Minimum Height Trees
- 语言的战争
- 放苹果
- boot.src 编译生成
- Ubuntu14.04安装Cartographer教程
- Android四大组件
- Leetcode 310. Minimum Height Trees
- i+1<i i-1>i java溢出问题;补码 反码 面试题
- Redhat 7.0使用CentOS的Yum网络源
- 【蓝桥杯】分解质因数
- POJ 3020 Antenna Placement 匈牙利算法变形
- 进程调度算法整理
- CentOS 6.5 最小化安装zabbix
- link js重构心得
- Android NDK 是什么