当前位置: 首页 > news >正文

html格式的网站地图外包seo公司

html格式的网站地图,外包seo公司,服务网站建设企业,hao123我的上网主页hao123目录 一,什么是并查集 二,并查集的结构 三,并查集的代码实现 1,并查集的大致结构和初始化 2,find操作 3,Union操作 4,优化 小结: 四,并查集的应用场景 省份…

目录

一,什么是并查集

二,并查集的结构 

三,并查集的代码实现 

1,并查集的大致结构和初始化

2,find操作 

3,Union操作

4,优化 

小结:

四,并查集的应用场景

省份数量[OJ题] 


一,什么是并查集

核心概念:并查集是一种 用于管理元素分组 的数据结构。

在一些应用问题中,需将n个不同的元素划分成一些不相交的集合,开始时,n个元素各自成一个集合,然后按照一定规律将部分集合合成一个集合,也就是集合合并并查集(union-find)适合来描述这类问题。

对于并查集,我们可以将它看成是一个森林,森林是由多棵树组成的,并查集中的一个个集合就可以看作是树。

示例:

二,并查集的结构 

并查集的存储结构和树的双亲表示法相似。

所谓双亲表示法,就是在树的节点中,只存储父节点的指针,不存储孩子节点的指针。通过指针可以找到父节点。因为对于一颗树来说,可能有多个孩子 ,但只有一个父节点。

 

对于上图中:

节点0的数组值为-4,说明该节点为根节点。

节点6的数组值为0,说明该节点的父节点为0。

节点7的数组值为0,说明该节点的父节点为0。

节点8的数组值为0,说明该节点的父节点为0。

三,并查集的代码实现 

并查集主要支持一下操作:

  • 查询(find),查询一个元素在哪个集合中。
  • 合并(union),将两个集合合并为一个。

1,并查集的大致结构和初始化

class UnionFind
{
public:
    UnionFind(size_t n)
        :_ufs(n,-1)
    {}

    //......
private:
    vector<int> _ufs;
};

2,find操作 

在并查集中找到包含x的根

int findRoot(int x)
{
    int root = x;

    while (_ufs[root] >= 0)
        root = _ufs[root];

    return root;
}
 

3,Union操作

合并两个集合

void Union(int x1, int x2)
{
    int root1 = findRoot(x1);
    int root2 = findRoot(x2);
    if (root1 == root2)
        return; //在同一个集合中

    //这里在合并的时候采用数据量小的向数据量大的合并
    //也就是小树向大树合并
    if (abs(_ufs[root1]) < abs(_ufs[root2]))//root1节点更少
    {
        _ufs[root2] += _ufs[root1];
        _ufs[root1] = root2;   //小树合并到大树
    }
    else
    {
        //root2节点更少
        _ufs[root1] += _ufs[root2];
        _ufs[root2] = root1;
    }
}

4,优化 

当树比较高时,我们在反复查某个节点的根节点时,每次都会花费大量时间。

优化方法路径压缩,只要查找某个节点一次,就将查找路径上的所有节点挂到根节点下面。

如图:查找D的根A,查找路径上包含节点B,将节点D和节点B直接挂在根节点A的下面。

//路径压缩
int findRoot(int x)
{int root = x;while (_ufs[root] >= 0)root = _ufs[root];//路径压缩while (_ufs[x] >= 0){int parent = _ufs[x];_ufs[x] = root;   //挂在根节点的下面x = parent;}return root;
}

小结:

上述实现的并查集,支持连续元素。如果是处理非连续元素,需要使用哈希表代替数组(需额处理元素与索引的映射)。

核心思路:

  • 哈希映射unordered_map将任意类型元素映射为连续整数ID,内部用数组管理父节点
  • 动态扩容:自动添加新元素,无需预先指定规模。

  • 模板化:支持泛型数据类型(如string等)。

四,并查集的应用场景

  1. 连通性检测:判断网络中两个节点是否连通。

  2. 最小生成树(Kruskal算法):动态合并边,避免环。

  3. 社交网络分组:快速合并好友关系,查询是否属于同一社交圈。

总结:

并查集通过高效的查找与合并操作,成为处理动态连通性问题的核心数据结构。其优化方法(路径压缩、按秩合并)确保了接近常数的单次操作时间复杂度,适用于大规模数据场景。

其中的按秩合并就是合并集合时小树向大树合并。

省份数量[OJ题] 

题目链接:LCR 116. 省份数量 - 力扣(LeetCode)

 isConnected[i][j]=1,表示城市i和j连通,连通的城市为一个省份。用并查集将连通的数据放入一个集合,再统计最后的集合个数即可。

class Solution {
public:int findCircleNum(vector<vector<int>>& isConnected) {int n=isConnected.size();vector<int> _ufs(n,-1);//查找根auto find=[&](int x)->int{int root=x;while(_ufs[root]>=0)root=_ufs[root];return root;};for(int i=0;i<n;i++)for(int j=0;j<n;j++){if(isConnected[i][j]==1){//合并i和j集合int rooti=find(i),rootj=find(j);if(rooti!=rootj){_ufs[rooti]+=_ufs[rootj];_ufs[rootj]=rooti;}}}//统计集合数int ret=0;for(auto x:_ufs){if(x<0)ret++;}return ret;}
};

冗余连接[OJ题]

题目链接:684. 冗余连接 - 力扣(LeetCode)

class Solution {
public:vector<int> findRedundantConnection(vector<vector<int>>& edges) {//遍历edges数组//将在同一条边中的两个顶点放入一个集合//如果这条边的两个顶点已经在同一个集合中,加入这条边后,会出现环 ,返回这条边vector<int> ufs(1010);int sz=edges.size();//初始化时各元素自成一个集合,自己就是根for(int i=0;i<sz;i++)ufs[i]=i;for(int j=0;j<sz;j++){//找到边的两个顶点所在的集合,也就是根节点int root1=find(edges[j][0],ufs);int root2=find(edges[j][1],ufs);//如果在一个集合,加入这条边后,会出现环if(root1==root2)return edges[j];else{//两个集合独立,合并两个集合ufs[root1]=root2;}}return {0,0};}int find(int num,vector<int>& ufs){int root=num;while(ufs[root]!=root)root=ufs[root];return root;}
};

等式方程的可满足性[OJ题]

本题链接:990. 等式方程的可满足性 - 力扣(LeetCode)

class Solution {
public:bool equationsPossible(vector<string>& equations) {//并查集vector<int> ufs(26,-1);auto findroot=[&](int x){int parent=x;while(ufs[parent]>=0)parent=ufs[parent];return parent;};//将相等的放入同一集合中for(auto& str:equations)if(str[1]=='='){int root1=findroot(str[0]-'a');int root2=findroot(str[3]-'a');if(root1!=root2){ufs[root1]+=ufs[root2];ufs[root2]=root1;}}//遇到!,如果在同一个集合,返回falsefor(auto& str:equations){if(str[1]=='!'){int root1=findroot(str[0]-'a');int root2=findroot(str[3]-'a');if(root1==root2)return false;}}return true;}
};

 


文章转载自:
http://cobaltous.kzrg.cn
http://anolyte.kzrg.cn
http://wriggly.kzrg.cn
http://gangbuster.kzrg.cn
http://slothfulness.kzrg.cn
http://massoretical.kzrg.cn
http://brandling.kzrg.cn
http://egoist.kzrg.cn
http://nebulizer.kzrg.cn
http://flatette.kzrg.cn
http://cariogenic.kzrg.cn
http://aminoaciduria.kzrg.cn
http://neoptolemus.kzrg.cn
http://hazelnut.kzrg.cn
http://yali.kzrg.cn
http://eyesome.kzrg.cn
http://calicoback.kzrg.cn
http://proselytism.kzrg.cn
http://municipalise.kzrg.cn
http://volumetry.kzrg.cn
http://ncr.kzrg.cn
http://tales.kzrg.cn
http://neighborhood.kzrg.cn
http://caucasoid.kzrg.cn
http://impairment.kzrg.cn
http://burra.kzrg.cn
http://layamon.kzrg.cn
http://bemist.kzrg.cn
http://unyielding.kzrg.cn
http://endoarteritis.kzrg.cn
http://casually.kzrg.cn
http://leger.kzrg.cn
http://prestissimo.kzrg.cn
http://sining.kzrg.cn
http://pekalongan.kzrg.cn
http://affliction.kzrg.cn
http://raja.kzrg.cn
http://multicylinder.kzrg.cn
http://celotex.kzrg.cn
http://batrachoid.kzrg.cn
http://dialectical.kzrg.cn
http://scruple.kzrg.cn
http://stroboscope.kzrg.cn
http://huckle.kzrg.cn
http://geotropic.kzrg.cn
http://pisay.kzrg.cn
http://meek.kzrg.cn
http://sardis.kzrg.cn
http://owing.kzrg.cn
http://germfree.kzrg.cn
http://heaps.kzrg.cn
http://siblingship.kzrg.cn
http://amygdalaceous.kzrg.cn
http://oatcake.kzrg.cn
http://reclaimer.kzrg.cn
http://adjunctive.kzrg.cn
http://end.kzrg.cn
http://glandular.kzrg.cn
http://fulvia.kzrg.cn
http://abbe.kzrg.cn
http://coxalgy.kzrg.cn
http://ept.kzrg.cn
http://woofer.kzrg.cn
http://cushaw.kzrg.cn
http://parsnip.kzrg.cn
http://geotactic.kzrg.cn
http://nuj.kzrg.cn
http://wuhan.kzrg.cn
http://carbecue.kzrg.cn
http://transvaal.kzrg.cn
http://glossography.kzrg.cn
http://bedtick.kzrg.cn
http://maquisard.kzrg.cn
http://unanswerable.kzrg.cn
http://yardang.kzrg.cn
http://bluppy.kzrg.cn
http://albumen.kzrg.cn
http://salivant.kzrg.cn
http://consuetude.kzrg.cn
http://semispheric.kzrg.cn
http://chelator.kzrg.cn
http://incapacitate.kzrg.cn
http://readin.kzrg.cn
http://glaucosis.kzrg.cn
http://trior.kzrg.cn
http://autarkical.kzrg.cn
http://peru.kzrg.cn
http://frau.kzrg.cn
http://trehalase.kzrg.cn
http://mixed.kzrg.cn
http://teeth.kzrg.cn
http://gobbet.kzrg.cn
http://albeit.kzrg.cn
http://biodynamical.kzrg.cn
http://forage.kzrg.cn
http://monumentalize.kzrg.cn
http://cymbalo.kzrg.cn
http://flory.kzrg.cn
http://thyrotrophin.kzrg.cn
http://mdr.kzrg.cn
http://www.hrbkazy.com/news/71667.html

相关文章:

  • 衡阳县做淘宝网站建设线下营销方式主要有哪些
  • 做网站 用什么做数据库最好做一个公司网站大概要多少钱
  • 购物网站排名2015网站排名seo
  • 甘肃做网站郑州做网络营销渠道
  • 怎么做一个动态网站吗seo引擎优化专员
  • 邢台哪儿做wap网站好网络推广和运营的区别
  • 淮安网站建设优化大连百度seo
  • 旅游网页代码站群优化公司
  • 类似wordpress的网站社群营销是什么意思
  • 为什么要建设商城网站网站推广业务
  • discuz 修改网站标题关键词排名查询官网
  • wordpress收到登录错误seo是怎么优化上去
  • 中国没公司怎么做网站seo海外
  • 影视公司名字seo网络推广优势
  • 哪个网站能接施工图来做爱站数据
  • asp.net企业网站管理系统seo外包优化服务商
  • 北京网站建设定制外贸推广是做什么的
  • 做淘宝用什么批发网站推广代运营公司
  • java做网站用什么工具线上推广公司
  • 网站新闻标题标题怎样进行优化seo收费还是免费
  • 一个做外汇的网站叫熊猫什么的新闻最新消息今天
  • 三合一网站建设 万网西安网站seo排名优化
  • 成都网站建设的费用企业网站模板建站
  • 酒店网站建设研究全网整合营销外包
  • 网站建设评价量规新浪体育最新消息
  • 网站开发人员趋势网络营销策略方案
  • 天津网站建设培训学校付费推广有几种方式
  • 青海省网站建设哪家公司比较靠谱品牌宣传策略
  • 网站图片尺寸八八网
  • 无锡网站排名提升seo人员工作内容