There is an undirected star graph consisting of n
nodes labeled from 1
to n
. A star graph is a graph where there is one center node and exactly n - 1
edges that connect the center node with every other node.
You are given a 2D integer array edges
where each edges[i] = [ui, vi]
indicates that there is an edge between the nodes ui
and vi
. Return the center of the given star graph.
Example 1:
Input: edges = [[1,2],[2,3],[4,2]] Output: 2 Explanation: As shown in the figure above, node 2 is connected to every other node, so 2 is the center.
Example 2:
Input: edges = [[1,2],[5,1],[1,3],[1,4]] Output: 1
Constraints:
3 <= n <= 105
edges.length == n - 1
edges[i].length == 2
1 <= ui, vi <= n
ui != vi
- The given
edges
represent a valid star graph.
Solution: Graph / Hashtable
Count the degree of each node, return the one with n-1 degrees.
Time complexity: O(n)
Space complexity: O(n)
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// Author: Huahua class Solution { public: int findCenter(vector<vector<int>>& edges) { unordered_map<int, int> degrees; for (const auto& e : edges) { ++degrees[e[0]]; ++degrees[e[1]]; } const int n = degrees.size(); for (const auto& [id, d] : degrees) if (d == n - 1) return id; return -1; } }; |
Since the center node must appear in each edge, we just need to find the mode of edges[0] + edges[1]
Time complexity: O(1)
Space complexity: O(1)
Python
1 2 3 4 |
# Author: Huahua class Solution: def findCenter(self, e): return mode(e[0] + e[1]) |
请尊重作者的劳动成果,转载请注明出处!花花保留对文章/视频的所有权利。
如果您喜欢这篇文章/视频,欢迎您捐赠花花。
If you like my articles / videos, donations are welcome.
Be First to Comment