1.题目
https://leetcode-cn.com/problems/redundant-connection/
2.题解
这道题的实质就是让我们把N个节点带环的无向图通过去掉一个边的方法变成N个节点的树(就是把环给去掉)。那么去掉的这个边的的特点就是他是一个两个点都被其他点连着的边。如果只有三个点,那么这个边的两个点的顶点就必是同一个点;如果是多个点,那么就可以用那个较小的节点设为较大的那个节点。直到满足上一情况的条件。便可得出结果。
3.代码
class Solution {
public int[] findRedundantConnection(int[][] edges) {
int[] parent = new int[1001];
//父节点
for (int i = 0; i < parent.length; i++){
parent[i] = i;
}
//遍历
for (int[] edge: edges){
int f = edge[0];
int t = edge[1];
if (find(parent, f) == find(parent, t)) return edge;
else parent[find(parent, f)] = find(parent, t);
}
return new int[2];
}
//查找父节点
private int find(int[] parent, int f) {
if (f != parent[f]) {
parent[f] = find(parent, parent[f]);
}
return parent[f];
}
}
网友评论