1791 找出星型图的中心节点 - 枚举 - 树 - 图

欢迎关注更多精彩
关注我,学习常用算法与数据结构,一题多解,降维打击。

题目描述

[1791] 找出星型图的中心节点

https://leetcode-cn.com/problems/find-center-of-star-graph/

题目描述

有一个无向的 星型 图,由 n 个编号从 1 到 n 的节点组成。星型图有一个 中心 节点,并且恰有 n - 1 条边将中心节点与其他每个节点连接起来。

给你一个二维整数数组 edges ,其中 edges[i] = [ui, vi] 表示在节点 ui 和 vi 之间存在一条边。请你找出并返回 edges 所表示星型图的中心节点。

在这里插入图片描述

示例 1:

输入:edges = [[1,2],[2,3],[4,2]]
输出:2
解释:如上图所示,节点 2 与其他每个节点都相连,所以节点 2 是中心节点。
示例 2:

输入:edges = [[1,2],[5,1],[1,3],[1,4]]
输出:1

提示:

3 <= n <= 105
edges.length == n - 1
edges[i].length == 2
1 <= ui, vi <= n
ui != vi
题目数据给出的 edges 表示一个有效的星型图

Related Topics
  • 枚举

题目剖析&信息挖掘

此题为规律题,通过树的特性,找到中心点的特性。

解题思路

方法一 枚举

解析

由题意可知,题目一定有解,中心点一定与其他点有边,所以中心点的度为n-1。

思路
func findCenter(edges [][]int) int {
	du []int
  for _, e :=range edges {
    //统计结点的度
  }
  
  ans :=1
  for i:=1;i<=n;i++ {
    // 查找度为n-1的结点, 返回
  }
  
  return ans // 一定有答案
}
注意
  • 题目一定有答案。
知识点
  • 枚举
复杂度
  • 时间复杂度:O(n)
  • 空间复杂度:O(1)
代码实现
func findCenter(edges [][]int) int {
	n := len(edges) + 1
	du := make([]int, len(edges)+10)
	for _, e := range edges {
    //统计结点的度
		du[e[0]]++
		du[e[1]]++
	}

	for i := 1; i <= n; i++ {
		if du[i] == n-1 {
			return i // 查找度为n-1的结点, 返回
		}
	}

	return -1 // 一定有答案,不会运行到这里
}

本人码农,希望通过自己的分享,让大家更容易学懂计算机知识。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值