leetcode 1791. Find Center of Star Graph(python)

描述

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:

avater

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

Note:

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.

解析

根据题意,肯定有一个中心点,而且有 n-1 条边,由于各种附属条件限制,只需要找到在 edges 中至少出现两次的点即可,所以遍历 edges ,对其中的点进行计数,只要有出现两次的点即为中心点。

解答

class Solution(object):
    def findCenter(self, edges):
        """
        :type edges: List[List[int]]
        :rtype: int
        """
        d = {}
        n = len(edges)
        for edge in edges:
            if edge[0] not in d:
                d[edge[0]] = 1
            else:
                d[edge[0]] += 1
            if d[edge[0]] == 2:
                return edge[0]
            
            if edge[1] not in d:
                d[edge[1]] = 1
            else:
                d[edge[1]] += 1
            if d[edge[1]] == 2:
                return edge[1]
            
        return -1

运行结果

Runtime: 684 ms, faster than 100.00% of Python online submissions for Find Center of Star Graph.
Memory Usage: 52.5 MB, less than 100.00% of Python online submissions for Find Center of Star Graph.

原题链接:https://leetcode.com/problems/find-center-of-star-graph/

您的支持是我最大的动力

猜你喜欢

转载自blog.csdn.net/wang7075202/article/details/115378445