class Solution {
int[] f;
public int[] findRedundantConnection(int[][] edges) {
int length = edges.length;
f = new int[length + 1];
for(int i = 1;i <= length;i++){
f[i] = i;
}
for(int[] edge : edges){
int n1 = edge[0],n2 = edge[1];
if(find(n1) != find(n2)){
union(n1,n2);
}else{
return edge;
}
}
return null;
}
public int find(int x){
return f[x] == x ? x : find(f[x]);
}
public void union(int u,int v){
int l1 = find(u),l2 = find(v);
f[l2] = l1;
}
}
并查集问题
检查是否有环
如果相同节点不在同一连通分量上,证明不能构成环。