LeetCode 547. 省份数量

省份数量

  • 题目
  • 思路
  • 实现代码(Java)


题目

LeetCode 547. 省份数量_第1张图片LeetCode 547. 省份数量_第2张图片


思路

利用并查集实现,这题就是求无向图的连通分量个数,独立的顶点也算是一个连通分量


实现代码(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

你可能感兴趣的:(LeetCode刷题记录,leetcode,算法,图论)