class Solution {
public int makeConnected(int n, int[][] connections) {
int len = connections.length;
if(len < n-1)
return -1;
UnionFind uf = new UnionFind(n);
for(int i=0;i<len;i++){
int[] connection = connections[i];
uf.Union(connection[0],connection[1]);
}
return uf.count -1;
}
public class UnionFind{
int[] parent;
int count;
public int getCount(){
return count;
}
public UnionFind(int n){
parent = new int[n];
count = n;
for(int i =0;i<n;i++){
parent[i] = i;
}
}
public int find(int x){
if(parent[x] != x)
parent[x] = find(parent[x]);
return parent[x];
}
public boolean Union(int x,int y){
int rootX = find(x);
int rootY = find(y);
if(rootX == rootY)
return false ;
parent[rootX] = rootY;
count -= 1;
return true;
}
}
}
相关文章
- 11-22LeetCode 1319.连通网络的操作次数
- 11-221319 连通网络的操作次数
- 11-22【LeetCode】1319.连通网络的操作次数(Number of Operations to Make Network Connected)
- 11-22leetcode-1342:将数字变成 0 的操作次数
- 11-22LeetCode——1342. 将数字变成 0 的操作次数
- 11-22leetcode1342. 将数字变成 0 的操作次数(easy)
- 11-22LeetCode -1319 连通网络的操作次数
- 11-22leetcode1319 联通网络的操作次数
- 11-22LeetCode 1342. 将数字变成 0 的操作次数 双百效率 C/C++描述
- 11-22leetcode常规算法题复盘(第十五期)——除法求值&省份数量&由斜杠划分区域&连通网络的操作次数