zoukankan      html  css  js  c++  java
  • 并查集

    并查集介绍:

    一群小弟拜老大哥。老大哥(根节点)一样帮派一样。

    并查集表达:

    N个人的话,N长度的数组即可。每个数组元素对应的值是这个人的大哥。

    find()操作是,找上一级的大哥。

    union()操作是,老大哥拜大哥。

    并查集初始化:

    每个人先成自己的大哥。

    并查集裸题:

     裸题代码:

    class Solution {
    public:
        int nums[205];
        int findCircleNum(vector<vector<int> >& M) {
            for(int i=0;i<205;i++){
                nums[i]=i;
            }
            for(int i=0;i<M.size();i++){
                for(int j=0;j<M.size();j++){
                    if(M[i][j]==1) Union(i,j);
                }
            }
            int res = 0;
            for(int i=0;i<M.size();i++){
                if(i==nums[i]) res++;
            }
            return res;
        }
        int find(int x){
            return nums[x]==x?x:find(nums[x]);
        };
        void Union(int x,int y){
            int a = find(x);
            int b = find(y);
            nums[b]=a;
        }
    };
  • 相关阅读:
    判断
    数的读写
    单词长度
    c语言字符串大小写字母转换
    URL超长问题
    使用Loadrunner录制手机端http请求
    NoSql 数据库理解
    .NET, ASP.NET, ADO.NET, C# 区别
    Browser 对象
    装箱与拆箱
  • 原文地址:https://www.cnblogs.com/godoforange/p/11242069.html
Copyright © 2011-2022 走看看