首页 > 其他分享 >并查集模板(map保存负数下标)

并查集模板(map保存负数下标)

时间:2024-12-11 23:13:29浏览次数:4  
标签:map set 下标 int 查集 rank fa num rootx

class Solution {
unordered_map<int,int>fa,rank;
void init(unordered_set&set){
for(const auto& num:set){
fa[num]=num;
rank[num]=1;
}
}
int finds(int x){
if(x!=fa[x]){
fa[x]=finds(fa[x]);
}
return fa[x];
}
void unions(int x,int y){
int rootx=finds(x);
int rooty=finds(y);
if(rank[rootx]>rank[rooty]){
fa[rooty]=rootx;
} else if(rank[rootx]<rank[rooty]){
fa[rootx]=rooty;
} else {
fa[rootx]=rooty;
rank[rootx]++;
}
}
public:
int longestConsecutive(vector& nums) {
int n=nums.size();
if(n==0) return 0;
int ans=1;
unordered_setset(nums.begin(),nums.end());
init(set);
for (auto& num : nums) {
if (set.count(num + 1)) { // 如果num+1存在,则合并num和num+1
unions(num, num + 1);
}
}
unordered_map<int,int>map;
for(auto&num:set){
int a=finds(num);
map[a]++;
}
for(auto&s:map){
int val=s.second;
ans=max(ans,val);
}

    return ans;
    
    
}

};

标签:map,set,下标,int,查集,rank,fa,num,rootx
From: https://www.cnblogs.com/zsh260439/p/18601162

相关文章

  • 投票法(选择数组中出现最多的数字)可以map代替
    include<stdio.h>//找到数组中出现次数超过一半的数字intfindMostFrequent(int*input,intlength){//候选数字初始化为数组第一个元素intcandidate=input[0];//计数初始化为1intcount=1;//遍历数组for(inti=1;i<length;i++){//如果当前数......
  • 【语法】高阶函数:map、filter、sorted、reduce
    map【python】Python高阶函数--map函数的详细语法分析与应用实战_pythonmap-CSDN博客filter【python】Python高阶函数--filter函数的高阶用法解析与应用实战_python的filter函数的用法-CSDN博客sorted【python】Python高阶函数--sorted函数的高阶用法解析与应用实战_高阶函......
  • C++ Boost库 Bimap双向映射容器
    Boost库Bimap容器概述Bimap是Boost库中提供的一种双向映射(bi-directionalmap)数据结构。在C++标准库中,std::map或std::unordered_map只允许通过键来查找值,而boost::bimap允许同时通过键和值来查找对应的元素。特点双向映射:可以通过键来查找值,也可以通过值来查找键。键和值......
  • bitmap的特性和应用
    BitMap是什么?BitMap简称位图,实际上是一个散列表,只不过这个散列表中各个槽是计算机存储中的最小单元bit.那BitMap数据结构长什么样呢?一个长度为8的BitMap是下面这样的:状态实际表示初始化状态00000000使用后状态00100000BitMap特性数据结构本身所占......
  • xv6 lab10: mmap
    实现两个功能:分别是mmap与munmap,将文件映射到内存当中,并为一个线程记录他管理的文件所在的页表目录。函数原型如下:char*mmap(char*addr,intlen,intprot,intflags,intfd,intoff);intmunmap(char*addr,intlen);其中mmap参数含义分别是映射地址(为0时由内核代......
  • 渗透测试人员的 Nmap:漏洞扫描零基础入门教程,网络安全看这一篇就够了!
    此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用......
  • Java-21 深入浅出 MyBatis - 手写ORM框架2 手写Resources、MappedStatment、XMLBuilde
    点一下关注吧!!!非常感谢!!持续更新!!!大数据篇正在更新!https://blog.csdn.net/w776341482/category_12713819.html目前已经更新到了:MyBatis(正在更新)框架实现在当前的项目中,在resources下新建:sqlMapConfig.xmlmapper.xmlsqlMapConfig.xml<?xmlversion="1.0"encoding="U......
  • Python-geopandas-读取MapInfor-20241209
    #读取数据,需要制定坐标格式shapefile_path=r'd:\Mapinfor\map\赣江新区新增图层.TAB'mapinfo_gdp=gpd.read_file(shapefile_path,driver="MapinfoFile")#先设置一个坐标系,否则会报提示性错误mapinfo_gdp=mapinfo_gdp.to_crs(epsg=4326)#校验坐标系,转换到目标投影......
  • jmap命令的作用是什么?
    jmap是JDK自带的工具软件,主要用于打印指定Java进程的内存细节。也就是说可以使用jmap生成HeapDump。如果程序内存不足或者频繁GC,很有可能存在内存泄露情况,这时候就要借助Java堆Dump查看对象的情况。堆Dump是反应Java堆使用情况的内存镜像,其中主要包括系统信息、虚拟机属性......
  • 【唐叔学算法】第八天:并查集-图论连通性的大杀器
    你是否曾为如何高效地解决图论中的连通性问题而烦恼?并查集算法,就像一张无形的网,能帮你轻松连接所有节点。今天,就让我们一起揭开并查集算法的神秘面纱,探索它在Java编程中的应用。并查集是什么?并查集(Union-Find)是一种数据结构,用于处理一些不交集的合并及查询问题。它支持两......