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.来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-center-of-star-graph
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
提供两种方法
class Solution {
public int findCenter(int[][] edges) {
// 要么首条 edge 第一个节点(edges[0][0])是交点,
// 要么首边 edge 第二个节点(edge[0][1])是交点
return (edges[0][0]==edges[1][0] || edges[0][0]==edges[1][1])?edges[0][0] : edges[0][1];
}
}
class Solution {
public int findCenter(int[][] edges) {
// int n = edges.length;
// int[] list = new int[10];
// for(int[] i : edges){
// list[i[0]]++;
// list[i[1]]++;
// }
// for(int i = 0;i < list.length;i++){
// if(list[i] == list.length - 1){
// return list[i];
// }
// }
// return -1;
Map<Integer,Integer> map = new HashMap<>();
int n = edges.length;
for(int i = 0;i < n;i++){
for(int j = 0;j < edges[i].length;j++){
if(!map.containsKey(edges[i][j])){
map.put(edges[i][j],1);
} else {
return edges[i][j];
}
}
}
return 0;
}
}