zoukankan      html  css  js  c++  java
  • 【LeetCode】547.朋友圈(并查集)

    题目

    547. 朋友圈

    代码

    class Solution {
        public int findCircleNum(int[][] M) {
            int len = M.length;
            UF uf = new UF(len);
            for(int i = 0; i < len; i++){
                for(int j = 0; j < len; j++){
                    if(M[i][j] == 1){
                        uf.union(i, j);
                    }
                }
            }
            return uf.getcount();
        }
    }
    class UF{
        private int count;//连通分量个数
        private int[] parent;
        private int[] size;
    
        public UF(int n){
            this.count = n;
            parent = new int[n];
            size = new int[n];
            for(int i = 0; i < n; i++){
                parent[i] = i;
                size[i] = 1;
            }
        }
        public void union(int p, int q){
            int rootP = find(p);
            int rootQ = find(q);
            if(rootP == rootQ){
                return;
            }
            //P 结点大于 Q Q接在P下
            if(size[rootP] > size[rootQ]){
                parent[rootQ] = rootP;
                size[rootQ] += size[rootP];
            }else{
                parent[rootP] = rootQ;
                size[rootP] += size[rootQ];
            }
            count--;
        }
        public boolean isConnect(int p, int q){
            int rootP = find(p);
            int rootQ = find(q);
            return rootP == rootQ;
        }
        public int find(int x){
            while(parent[x] != x){
                parent[x] = parent[parent[x]];
                x = parent[x];
            }
            return x;
        }
        public int getcount(){
            return count;
        }
    }
    
  • 相关阅读:
    Azkaban 简介(一)
    大数据平台搭建(Ambari +HDP)
    大数据平台比较-CDH、HDP、CDP
    Kylin 操作使用(六)
    Kylin 安装部署(五)
    Kylin 核心概念(四)
    数据流图
    android:sharedUserId
    Android的uid与UserHandle
    C++ 多态
  • 原文地址:https://www.cnblogs.com/whisperbb/p/12400553.html
Copyright © 2011-2022 走看看