题目
解析
这一道题运用了并查集,
并查集知识,参考博客入口
在并查集的数组里,如果有相同的祖先,说明在同一颗树中,
因此如果一条边的两个点,有共同的祖先,说明他们在一颗树里。
此时再在两个点间连一条线,那么就会使得树中出现环。
答案
class Solution{
public:
vector<int> findRedundantConnection(vector<vector<int>>& edges){
vector<int> root(2001,-1);
for(vector<int> edge : edges){
//找到两个顶点的祖先
int x=find(root,edge[0]);
int y=find(root,edge[1]);
if(x==y) return edge;
//设置x的祖先为y,也可以理解为合并祖先为x和祖先为y的两颗树(图)
root[y]=x;
}
return {};
}
int find(vector<int> & root,int i){
while(root[i]!=-1){
i=root[i];
}
return i;
}
};
知识点
并查集,图判环,树