本想是dfs一下判断有没有环的,不过发现是双向边,而且有N条,说明有一条边是多余的,直接用kruskal算法比较方便。
code
class Solution {
int[] par;
public int[] findRedundantConnection(int[][] edges) {
int num = edges.length;
par = new int[num + 1];
for (int i = 1; i <= num; i++) {
par[i] = i;
}
for (int i = 0; i < num; i++) {
int u = edges[i][0];
int v = edges[i][1];
if (find(u) != find(v)){
union(u, v);
}else{
return edges[i];
}
}
return new int[0];
}
private int find(int x){
return par[x] == x? x:(par[x] = find(par[x]));
}
private void union(int i, int j){
int x = find(i);
int y = find(j);
par[x] = y;
}
}