Welcome to Subscribe On Youtube
Formatted question description: https://leetcode.ca/all/1791.html
1791. Find Center of Star Graph
Level
Medium
Description
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] = [u_i, v_i]
indicates that there is an edge between the nodes u_i
and v_i
. 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 <= 10^5
edges.length == n - 1
edges[i].length == 2
1 <= u_i, v_i <= n
u_i != v_i
- The given
edges
represent a valid star graph.
Solution
The given star graph is actually a tree, with n
nodes and n - 1
edges. The center of the star graph has n - 1
edges connected to it, and each of the remaining nodes has 1 edge connected to it. Simply calculate the number of edges connected to each node, and return the node that has more than 1 edge connected to it.
-
class Solution { public int findCenter(int[][] edges) { int n = edges.length + 1; int[] connections = new int[n + 1]; for (int[] edge : edges) { int node1 = edge[0], node2 = edge[1]; connections[node1]++; connections[node2]++; if (connections[node1] > 1) return node1; else if (connections[node2] > 1) return node2; } return 0; } } ############ class Solution { public int findCenter(int[][] edges) { int a = edges[0][0], b = edges[0][1]; int c = edges[1][0], d = edges[1][1]; return a == c || a == d ? a : b; } }
-
// OJ: https://leetcode.com/problems/find-center-of-star-graph/ // Time: O(1) // Space: O(1) class Solution { public: int findCenter(vector<vector<int>>& E) { return E[0][0] == E[1][0] || E[0][0] == E[1][1] ? E[0][0] : E[0][1]; } };
-
class Solution: def findCenter(self, edges: List[List[int]]) -> int: return edges[0][0] if edges[0][0] in edges[1] else edges[0][1] ############ # 1791. Find Center of Star Graph # https://leetcode.com/problems/find-center-of-star-graph/ class Solution: def findCenter(self, edges: List[List[int]]) -> int: n = len(edges) mp = collections.defaultdict(int) for a,b in edges: mp[a] += 1 mp[b] += 1 for key in mp: if mp[key] == n: return key return -1
-
func findCenter(edges [][]int) int { a, b := edges[0][0], edges[0][1] c, d := edges[1][0], edges[1][1] if a == c || a == d { return a } return b }
-
function findCenter(edges: number[][]): number { for (let num of edges[0]) { if (edges[1].includes(num)) { return num; } } }
-
/** * @param {number[][]} edges * @return {number} */ var findCenter = function (edges) { const [a, b] = edges[0]; const [c, d] = edges[1]; return a == c || a == d ? a : b; };
-
impl Solution { pub fn find_center(edges: Vec<Vec<i32>>) -> i32 { if edges[0][0] == edges[1][0] || edges[0][0] == edges[1][1] { return edges[0][0]; } edges[0][1] } }