当前位置:   article > 正文

Golang | Leetcode Golang题解之第310题最小高度树

Golang | Leetcode Golang题解之第310题最小高度树

题目:

题解:

  1. func findMinHeightTrees(n int, edges [][]int) []int {
  2. if n == 1 {
  3. return []int{0}
  4. }
  5. g := make([][]int, n)
  6. deg := make([]int, n)
  7. for _, e := range edges {
  8. x, y := e[0], e[1]
  9. g[x] = append(g[x], y)
  10. g[y] = append(g[y], x)
  11. deg[x]++
  12. deg[y]++
  13. }
  14. q := []int{}
  15. for i, d := range deg {
  16. if d == 1 {
  17. q = append(q, i)
  18. }
  19. }
  20. remainNodes := n
  21. for remainNodes > 2 {
  22. remainNodes -= len(q)
  23. tmp := q
  24. q = nil
  25. for _, x := range tmp {
  26. for _, y := range g[x] {
  27. deg[y]--
  28. if deg[y] == 1 {
  29. q = append(q, y)
  30. }
  31. }
  32. }
  33. }
  34. return q
  35. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/920000
推荐阅读
相关标签
  

闽ICP备14008679号