1791. 找出星型图的中心节点(简单)
有一个无向的 星型 图,由 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
表示一个有效的星型图
思路
方法一:计算每个节点的度
我们知道:由 n
个节点组成的星型图中,有一个中心节点,有 n - 1
条边分别连接中心节点和其余的每个节点。
所以中心节点的度是 n - 1
,其余每个节点的度都是 1
,因此我们只需遍历 edges
中的每条边并计算每个节点的度,度为 n - 1
(或者说 > 1
)的节点即为中心节点,因为非中心节点的度为1。
方法二:同时出现在两条边上的节点
本质上是延续方法一的优化,我们完全可以不遍历所有的边;从星型图的性质可知:星型图中的任意两条边,星型图的中心节点一定同时在这两条边中出现,其余节点一定不会同时在这两条边中出现。
所以只需要看两个边,找到同时出现在两条边上的节点即可。
代码
方法一:计算每个节点的度
- 时间复杂度、空间复杂度:O(n)
方法二:同时出现在两条边上的节点
- 时间复杂度、空间复杂度:O(1)