参考链接
- https://leetcode-cn.com/problems/find-center-of-star-graph/
题目描述
有一个无向的 星型 图,由 n 个编号从 1 到 n 的节点组成。星型图有一个中心节点,并且恰有 n - 1 条边将中心节点与其他每个节点连接起来。
给你一个二维整数数组 edges ,其中 edges[i] = [ui, vi] 表示在节点 ui 和 vi 之间存在一条边。请你找出并返回 edges 所表示星型图的中心节点。
解题思路
可以统计一下节点出现的次数,如果次数大于1,则为中心节点。本题其实只需要看任两条边即可,因为中心节点存在于每条边中。
代码
笨方法
class Solution {
public:
int findCenter(vector<vector<int>>& edges) {
unordered_set<int> prev_nums;
for (int i = 0; i < edges.size(); i ++)
{
for (int j = 0; j < 2; j ++)
{
if (prev_nums.count(edges[i][j]) == 1)
{
return edges[i][j];
}
prev_nums.insert(edges[i][j]);
}
}
return 0;
}
};
巧方法
class Solution {
public:
int findCenter(vector<vector<int>>& edges) {
if (edges[0][0] == edges[1][0])
{
return edges[0][0];
}
if (edges[0][0] == edges[1][1])
{
return edges[0][0];
}
return edges[0][1];
}
};