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

    概念:

      是一种树形的树形结构,主要用于解决不交集的合并以及查询问题;相对应的有一种

      联合-查找算法(union-find-algorithm)定义了两个用于此数据结构的操作:

    • 查询(Find):确定元素是否在同一个集合中;
    • 合并(Union):把两个不相交的集合合并为一个集合

    个人理解:

      针对该算法三个核心步骤依次为:初始化 ==>查找 ==>合并

      初始化:将每个元素视为一个节点其父节点为自己(通常初始化为一个数组);

      查找:也就是查找两个节点是否在同一连通分量中;(通常就是找两个节点的父节点

         是否一致);

      合并:根据你自己定的规则,将节点按照某种顺序连接起来;(这个规则也就是用于

         产生代表,通过代表来做后续的处理);

      示例:

      (初始化)如有编号为1, 2, 3, ..., n的n个元素,我们用一个数组fa[]来存储每个元素的

           父节点(因为每个元素有且只有一个父节点,所以这是可行的)。一开始,

           我们先将它们的父节点设为自己。

      (查找)我们用递归的写法实现对代表元素的查询:一层一层访问父节点,直至根节点

         (根节点的标志就是父节点是本身)。要判断两个元素是否属于同一个集合,只

          需要看它们的根节点是否相同即可。

      (合并)合并操作也是很简单的,先找到两个集合的代表元素,然后将前者的父节点设

          为后者即可。当然也可以将后者的父节点设为前者,这里暂时不重要。本文末

          尾会给出一个更合理的比较方法。

    使用场景(可见下面情形):

      leecode:547 朋友圈;684 冗余连接;面试题 17.07 婴儿名字

    总结:

      针对并查集来讲就像一个关键点由这个关键点可以牵待出一系列问题;

      可以参考:链接一链接二,写的很不错

      

      

     

  • 相关阅读:
    HTTP请求返回状态码详解
    C#-MVC开发微信应用(1)--开始使用微信接口
    码源中国.gitignore忽略文件配置
    Windows Server 2008 R2 下配置证书服务器和HTTPS方式访问网站
    架设证书服务器 及 让IIS启用HTTPS服务
    css设置图片的透明度
    页面通过打开设备判断跳转的链接页面
    sql语句修改字段长度
    【C#】时间戳转换
    C# Linq 交集、并集、差集、去重
  • 原文地址:https://www.cnblogs.com/gamecc666/p/14624138.html
Copyright © 2011-2022 走看看