题目
解析
这一道题运用了并查集,
并查集知识,参考博客入口
在并查集的数组里,如果有相同的祖先,说明在同一颗树中,
因此如果一条边的两个点,有共同的祖先,说明他们在一颗树里。
此时再在两个点间连一条线,那么就会使得树中出现环。
答案
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;
}
};
知识点
并查集,图判环,树
并查集判环算法

本文解析了LeetCode上一道关于并查集的题目,详细介绍了如何使用并查集判断图中是否存在环,并提供了完整的代码实现。通过并查集的数据结构,可以高效地解决图的连通性和环路检测问题。
441

被折叠的 条评论
为什么被折叠?



