省份数量
题目
思路
利用并查集实现,这题就是求无向图的连通分量个数,独立的顶点也算是一个连通分量
实现代码(Java)
class Solution {
int[] f;
public int findCircleNum(int[][] isConnected) {
int n = isConnected[0].length;
f = new int[n+1];
init(f,n);
for(int i = 0;i<n;i++){
for(int j = 0;j<n;j++) {
if(i!=j && isConnected[i][j] == 1) {
merge(i+1,j+1);
}
}
}
int cnt = 0;
for(int i = 1;i<=n;i++){
if(i == f[i]) {
cnt++;
}
}
return cnt;
}
public void init(int[] f,int n) {
for(int i = 1;i<=n;i++) {
f[i] = i;
}
}
public int findFx(int x) {
if( x == f[x]) {
return x;
}
x = findFx(f[x]);
return x;
}
public void merge(int x,int y) {
x = findFx(x);
y = findFx(y);
if(x != y) {
f[y] = x;
}
}
}
坚持分享,坚持原创,喜欢博主的靓仔靓女们可以看看博主的首页博客!
您的点赞与收藏是我分享博客的最大赞赏!
博主博客地址: https://blog.csdn.net/weixin_43967679