1.1 题目描述
思路
参考别人的代码,原文:LeetCode684冗余连接
记录每个相连节点的祖先,假设节点u,v存在一条边,那么就把u当做v的祖先,以此类推。若出现v已经是u的祖先,那么存在环,把u,v之间的边删除即可。
1.5 解法二代码
class Solution {
public:
vector<int> findRedundantConnection(vector<vector<int>>& edges) {
int ancestor[2000] = {};
for(int i = 0; i < edges.size(); i++) {
int u_ancestor = find_ancestor(ancestor, edges[i][0]);
int v_ancestor = find_ancestor(ancestor, edges[i][1]);
if(u_ancestor == v_ancestor) {
return {edges[i][0], edges[i][1]};
}
ancestor[u_ancestor] = v_ancestor;
}
return {};
}
int find_ancestor(int *ancestor, int u) {
int res = u;
while(ancestor[res] != 0) {
res = ancestor[res];
}
return res;
}
};