zoukankan      html  css  js  c++  java
  • 310. Minimum Height Trees

    package LeetCode_310
    
    import java.util.*
    import kotlin.collections.ArrayList
    
    /**
     * 310. Minimum Height Trees
     * https://leetcode.com/problems/minimum-height-trees/description/
     * */
    class Solution {
        fun findMinHeightTrees(n_: Int, edges: Array<IntArray>): List<Int> {
            var n = n_
            val result = ArrayList<Int>()
            if (n == 0) {
                return result
            }
            if (n == 1) {
                result.add(0)
                return result
            }
    
            //init and create graph
            val graph = ArrayList<ArrayList<Int>>()
            for (i in 0 until n) {
                graph.add(ArrayList())
            }
            for (edge in edges) {
                graph.get(edge[0]).add(edge[1])
                graph.get(edge[1]).add(edge[0])
            }
    
            val queue = LinkedList<Int>()
            for (i in 0 until n) {
                //add leaf node into queue
                if (graph.get(i).size == 1) {
                    queue.offer(i)
                }
            }
    
            //reduce level
            while (n > 2) {
                val size = queue.size
                n -= size
                for (i in 0 until size) {
                    val leafNode = queue.poll()//get the leaf node
                    for (node in graph[leafNode]) {//find out leaf node's connect node
                        graph.get(node).remove(leafNode)//remove the node's connection
                        if (graph.get(node).size == 1) {
                            queue.offer(node)
                        }
                    }
                }
            }
    
            while (queue.isNotEmpty()) {
                result.add(queue.poll())
            }
    
            return result
        }
    }
  • 相关阅读:
    经典算法以及案例总结
    supervisor的介绍
    快速排序算法
    mysql 省市联动sql 语句
    前段验证框架 formValidator
    css 之!important
    js 倒计时
    js 设置url 参数值
    java 获取指定日期
    js 日期控件laydate使用
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/12772862.html
Copyright © 2011-2022 走看看