Center of a Graph, in O(N)-time

 Problem is actually not that hard (the acceptance rate is close to 90%), here it is: Find Center of Star Graph - LeetCode

1791. Find Center of Star Graph
Medium

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.

Basically it boils down to one simple task: find the node with the most number of connections. That's it. Scan the edges and keep the count of connections either in a hash table or a bucket-array (I used the latter). Keep track of the max. Done. Code is below, cheers, ACC.

public int FindCenter(int[][] edges)
{
    int[] nodes = new int[100001];
    int max = 0;
    int retVal = 0;

    for (int i = 0; i < edges.Length; i++)
    {
        for (int j = 0; j < 2; j++)
        {
            nodes[edges[i][j]]++;
            if(nodes[edges[i][j]] > max)
            {
                max = nodes[edges[i][j]];
                retVal = edges[i][j];
            }
        }
    }

    return retVal;
}

Comments

Popular posts from this blog

Count Binary Substrings

Count Vowels Permutation: Standard DP

Maximum Number of Balloons