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:

Image text

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;
    }
}

All Problems

All Solutions