0
点赞
收藏
分享

微信扫一扫

leetcode-1791:找出星型图的中心节点

奋斗De奶爸 2022-02-15 阅读 80

leetcode-1791:找出星型图的中心节点

题目

参考链接

有一个无向的 星型 图,由 n 个编号从 1 到 n 的节点组成。星型图有一个 中心 节点,并且恰有 n - 1 条边将中心节点与其他每个节点连接起来。

给你一个二维整数数组 edges ,其中 edges[i] = [ui, vi] 表示在节点 ui 和 vi 之间存在一条边。请你找出并返回 edges 所表示星型图的中心节点。

示例 1:
在这里插入图片描述

输入:edges = [[1,2],[2,3],[4,2]]
输出:2
解释:如上图所示,节点 2 与其他每个节点都相连,所以节点 2 是中心节点。

示例 2:

输入:edges = [[1,2],[5,1],[1,3],[1,4]]
输出:1

在这里插入图片描述

解题

方法一:

查找出现n次的节点

class Solution {
public:
    int findCenter(vector<vector<int>>& edges) {
        int n=edges.size();
        unordered_map<int,int> map;
        for(vector<int>& edge:edges){
            map[edge[0]]++;
            map[edge[1]]++;
        }
        for(auto it=map.begin();it!=map.end();it++){
            if(it->second==n){
                return it->first;
            }
        }
        return -1;
    }
};

方法二:

可以任选两条边,然后寻找这两条边的公共节点,该节点即为星型图的中心节点。

class Solution {
public:
    int findCenter(vector<vector<int>>& edges) {
        return edges[0][0] == edges[1][0] || edges[0][0] == edges[1][1] ? edges[0][0] : edges[0][1];
    }
};
举报

相关推荐

0 条评论