golang力扣leetcode 2049.统计最高分的节点数目

简介: golang力扣leetcode 2049.统计最高分的节点数目

2049.统计最高分的节点数目

2049.统计最高分的节点数目

题解

题目意思是,一棵树,依次去掉一个节点,剩下的各个不连通的树,树的节点个数,进行相乘,得到的值的最大数目。即n个节点,有n的答案,然后在n个答案中找到值最大的,统计值最大的有几个,并返回这个数量。

思路就是dfs,具体看注释即可

代码

package main
func countHighestScoreNodes(parents []int) (ans int) {
  n := len(parents)
  children := make([][]int, n)
  for node := 1; node < n; node++ {
    p := parents[node]
    children[p] = append(children[p], node) //统计出每个节点的子节点
  }
  maxScore := 0
  var dfs func(int) int
  dfs = func(node int) int { //计算每个节点的大小
    score, sum := 1, 1
    for _, v := range children[node] {
      sub := dfs(v) //算出子节点的个数
      score *= sub  //算值
      sum += sub    //这里把子节点的个数累加起来(默认为1,包括自己这个节点)
    }
    if node != 0 { //如果不是根节点,因为根节点只有左右子树
      score *= n - sum //n-sum的值就是除去node这颗子树,剩下的节点数量
    }
    if maxScore == score {
      ans++
    } else if maxScore < score {
      ans = 1
      maxScore = score
    }
    return sum //返回当前子树节点的数量
  }
  dfs(0)
  return
}


目录
相关文章
|
5天前
|
Java
【LeetCode力扣】面试题 17.14. 最小K个数(top-k问题)
【LeetCode力扣】面试题 17.14. 最小K个数(top-k问题)
9 1
|
5天前
|
存储 算法
【LeetCode力扣】单调栈解决Next Greater Number(下一个更大值)问题
【LeetCode力扣】单调栈解决Next Greater Number(下一个更大值)问题
5 0
|
20天前
[leetcode~数位动态规划] 2719. 统计整数数目 hard
[leetcode~数位动态规划] 2719. 统计整数数目 hard
|
29天前
leetcode 2520 统计能整除数字的位数
leetcode 2520 统计能整除数字的位数
5 0
|
2月前
leetcode2376. 统计特殊整数
leetcode2376. 统计特殊整数
15 1
|
2月前
|
Serverless
leetcode2719. 统计整数数目
leetcode2719. 统计整数数目
14 0
|
4月前
|
Go 容器 SQL
【Golang Leetcode】总目录(Day1~100)
【Golang Leetcode】总目录(Day1~100)
477 1
【Golang Leetcode】总目录(Day1~100)
|
4月前
|
算法 测试技术 C#
LeetCode2444: 统计定界子数组的数目
LeetCode2444: 统计定界子数组的数目
|
10天前
|
监控 算法 Go
Golang深入浅出之-Go语言中的服务熔断、降级与限流策略
【5月更文挑战第4天】本文探讨了分布式系统中保障稳定性的重要策略:服务熔断、降级和限流。服务熔断通过快速失败和暂停故障服务调用来保护系统;服务降级在压力大时提供有限功能以保持整体可用性;限流控制访问频率,防止过载。文中列举了常见问题、解决方案,并提供了Go语言实现示例。合理应用这些策略能增强系统韧性和可用性。
40 0
|
8天前
|
分布式计算 Java Go
Golang深入浅出之-Go语言中的分布式计算框架Apache Beam
【5月更文挑战第6天】Apache Beam是一个统一的编程模型,适用于批处理和流处理,主要支持Java和Python,但也提供实验性的Go SDK。Go SDK的基本概念包括`PTransform`、`PCollection`和`Pipeline`。在使用中,需注意类型转换、窗口和触发器配置、资源管理和错误处理。尽管Go SDK文档有限,生态系统尚不成熟,且性能可能不高,但它仍为分布式计算提供了可移植的解决方案。通过理解和掌握Beam模型,开发者能编写高效的数据处理程序。
135 1