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

并查集(Union Find)

算法背景

Union Find算法,中文并查集。主要用来解决图论中的连通判断问题,简单抽象问题为:

  1. 平面上有n个点
  2. 给定他们之间两两连接关系

要求输入任意两个点,判断他们是否能够有一条路径联通

算法步骤

一旦有连接,就把一个节点设为另一个节点的父节点,最终连通的点会构成一颗树。通过判断两个节点的根节点是否相同,即可判断是否连通。具体如下

  1. 初始化时,每个节点指向自己,也就是根节点
  2. 遍历给定的两两连接关系,分别找各自的根节点,将两个根节点连接起来
  3. 判断是否联通很简单,找两个点的根结点是否相同

整个过程是不断合并树的过程,为了保证更优的效率,两个优化点

  1. 合并树的过程尽量保证平衡,这里引入根节点权重,小树合并到大树上,也就是秩优化
  2. 查找过程尽量快,这里引入路径压缩,把查找过程中的节点全部直接挂到根结点上,相当于一个均摊的过程

参考 https://mp.weixin.qq.com/s/gUwLfi25TYamq8AJVIopfA

代码详解

type UF struct {parent []intsz     []int
}// 初始化union find
func getUF(n int) *UF {parent := make([]int, n)sz := make([]int, n)for i := 0; i < n; i++ {parent[i] = i // 初始化父节点指向自己,即根节点指向自己sz[i] = i     // 树高初始化为1}return &UF{parent, sz}
}// 关联
func (u *UF) union(i int, j int) {root_i := u.find(i)root_j := u.find(j)if root_i == root_j {return}// 小树挂到大树上,秩优化if u.sz[root_i] > u.sz[root_j] {u.parent[root_j] = root_i} else {u.parent[root_i] = root_jif u.sz[root_i] == u.sz[root_j] {u.sz[root_j] += 1}}
}// 查找根节点
func (u *UF) find(i int) int {if u.parent[i] != i {u.parent[i] = u.find(u.parent[i]) // 递归,路径压缩}return u.parent[i]
}// 判断是否连通
func (u *UF) connected(i int, j int) bool {root_i := u.find(i)root_j := u.find(j)return root_i == root_j
}

关联leetcode

leetcode关联题目参考 https://books.halfrost.com/leetcode/ChapterTwo/Union_Find/

  • 源代码位置 https://github.com/JimWen/go-algo/tree/main/unionfind

原创,转载请注明来自

  • 博客[https://blog.csdn.net/wenzhou1219](https://
    wenzhou1219)
  • 个人网站http://jimwen.net/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-35043.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

TCP/IP网络协议以及Android网络优化方案

引用文章地址&#xff1a;TCP/IP网络协议 文章目录TCP/IPTCP/IP 模型TCP 和 UDPTCP怎么保证传输过程的可靠性&#xff1f;TCP 为什么要三次握手/四次挥手网页请求一个 URL 的流程DNS 工作原理HTTPS 加密原理移动端如何优化一个网络请求呢&#xff1f;DNS 优化CacheControlQ&…...

webSocket服务端与客户端消息通讯

一、WebSocket是HTML5出的东西&#xff08;协议&#xff09;&#xff0c;也就是说HTTP协议没有变化&#xff0c;或者说没关系&#xff0c;但HTTP是不支持持久连接的&#xff08;长连接&#xff0c;循环连接的不算&#xff09; 首先HTTP有1.1和1.0之说&#xff0c;也就是所谓的k…...

Vue 虚拟列表,纵享丝滑

转载文章&#xff1a;https://juejin.cn/post/6937939870018961439...

文华财经指标软件指标博易大师软件指标公式

CDJZ:ABS(MA(C,N3)-MA(C,120))/MA(C,120) < 0.5; 阶段卖出: 3.2,COLORLICYAN; 清仓卖出: 3.5,COLOR0088FF,DOTLINE; STICKLINE(动力线 > REF(动力线,1) ,动力线 ,REF(动力线,1),3 ,1),COLORRED; STICKLINE(动力线 <REF(动力线,1) ,动力线 ,REF(动力线,1),3 ,1),CO…...

redis数据结构

redis的使用 http://c.biancheng.net/view/4506.html 以下内容均来自该网站 http://c.biancheng.net/view/4540.html 1 字符串数据结构 上面是Redis字符串数据结构 哈希数据结构 一个key对应着一个hash结构&#xff0c;这个hash结构里面也是有很多键值对&#xff0c;key-va…...

简单的出入库管理软件一体化管理

关于库房管理软件&#xff0c;很多人都会问到这样的问题&#xff1a;有免费仓库出入库管理软件推荐吗&#xff1f;有没有简单上手&#xff0c;不收费的管理软件&#xff1f;找一款只需要看到库存的软件&#xff1f;等等&#xff0c;其实现在市面上很多出入库管理软件&#xff0…...

【Servlet】servlet中文显示问题

通过servlet类的doGet、doPost、service方法的HttpServletRequest request获取的参数中&#xff0c;如果有中文会出现乱码问题。 同样&#xff0c;通过HttpServletResponse response返回浏览器的html字符串中&#xff0c;也会出现中文乱码问题。 public class LoginServlet ex…...

mysql基础-常用sql语句

常用sql语句整理 在mysql中&#xff0c;常用sql语句为&#xff1a; 修改密码&#xff1a; alter user rootlocalhost identified with mysql_native_password BY 新密码; alter user rootlocalhost identified with mysql_native_password BY 123456;DDL&#xff08;Data Def…...

2021年婴儿监护器行业最新趋势报告——附下载链接

来源 | 凯度&天猫 婴儿监护器在全球范围快速增长&#xff0c;目前北美市场仍占主导地位。但是中国婴儿监护器市场占有率增长迅速&#xff0c;预计到2021年&#xff0c;婴儿监护器市场全球市场中&#xff0c;中国份额将达9.09%。天猫上&#xff0c;婴儿监护器销售增长尤为迅…...

从零开始学习C语言之联合体(参考结构体类比着看)

还没想好怎么写&#xff0c;先鸽着&#xff0c;抽空补上...

进出境快件如何报关

&#xff08;一&#xff09;快件的报关  1.快件的报关和查验应当在运营人所在地海关办公时间和专门监管场所内进行。如需在海关办公时间以外或专门监管场所以外进行&#xff0c;需事先商得海关同意&#xff0c;并向海关无偿提供必需的办公场所及必备的设施。 2.进境的快件…...

深度学习常用数据集

常用数据集Iris数据集&#xff08;鸢尾花数据集&#xff09;MushRoom数据集&#xff08;蘑菇数据集&#xff09;Bostom Housing数据集&#xff08;波士顿房价数据集&#xff09;Linnerrud 数据集MINST数据集Caltech101数据集Caltech256数据集CIFAR-10数据集CIFAR-100数据集SVHN…...

HTTP-2做错了什么?刚刚辉煌2年就要被弃用了!?

最近一段时间以来&#xff0c;关于HTTP/3的新闻有很多&#xff0c;越来越多的国际大公司已经开始使用HTTP/3了。 所以&#xff0c;HTTP/3已经是箭在弦上了&#xff0c;全面使用只是个时间问题&#xff0c;那么&#xff0c;作为一线开发者&#xff0c;我们也是时候了解下到底什么…...

JVM篇-知识点梳理

导致OutOfMemoryError异常的常见原因&#xff1a; 1内存中加载的数据量过于庞大&#xff0c;如一次从数据库取出过多数据&#xff1b; 2集合类中有对对象的引用&#xff0c;使用完后未清空&#xff0c;使得JVM不能回收&#xff1b; 3代码中存在死循环或循环产生过多重复的对…...

转载 | 各种数据库JDBC下载

原文链接点击打开链接各种数据库驱动数据库名称下载地址说明Mysqlhttp://www.mysql.com/products/connector/j/Shipped. But need to download the latest for MySQL 4.1 or higher.Oraclehttp://sourceforge.net/project/showfiles.php?group_id33291software/tech/java/sqlj…...

Hibernate对实际数据进行操作

//增 public static void main(String[] args){ Configuration cfg null; SessionFactory sf null; Session session null; Transaction ts null; User u new User(); System.out.println("请输入用户信息:&quo…...

sql中grant授权语句revoke撤销语句

MySQL 赋予用户权限命令的简单格式可概括为&#xff1a; grant 权限 on 数据库对象 to 用户 一、grant 普通数据用户&#xff0c;查询、插入、更新、删除 数据库中所有表数据的权利 grant select on testdb.*to common_user%; grant insert on testdb.*to common_user%; gran…...

QT如何设置小程序不被重复启动多个该程序

添加互斥锁 判断 如果进程有该程序&#xff0c;则return不运行 #if defined Q_OS_WIN32 //for win #include <windows.h> bool checkOnly() {// 创建互斥量HANDLE m_hMutex CreateMutex(NULL, FALSE, L"fortest_abc123" );// 检查错误代码if (GetLas…...

政产学研各界推动软件和信息技术服务业增速发展

​日前&#xff0c;工业和信息化部发布的最新数据显示&#xff0c;上半年&#xff0c;我国软件和信息技术服务业业务收入呈加快增长态势&#xff0c;完成软件业务收入44198亿元&#xff0c;同比增长23.2%&#xff0c;近两年复合增长率为14.7%。 从利润水平来看&#xff0c;上半…...

JavaScript-DOM、BOM对象

DOM对象 功能&#xff1a;控制html文档的内容 1、获取页面标签(元素)对象&#xff1a;Element 方法&#xff1a;document.getElementById(“id值”)&#xff1a;通过元素id获取元素对象、 2、操作Element对象&#xff1a; 1&#xff09;. 修改属性值&#xff1a; 明确获取的对…...

开发手札:git日常抽风记录

今天一大早代码提交不上github&#xff0c;各种方法解决不了&#xff0c;虽然最终不知道是否根治解决了&#xff0c;但是起码目前没问题&#xff0c;所以记录一下。 今天来公司三台开发机&#xff08;两台window、一台macos&#xff09;全部ssh connect timeout errorcode 22或…...

如何用Python快速爬取小姐姐的美图

最近有一个小伙伴拿一个python代码来问我为什么报错&#xff1f; 我仔细一看&#xff1a;是用来爬取某个网站妹子图的代码&#xff0c;结果发现那个网站已经404了&#xff0c;当然爬不到了。 其实很多初学者都喜欢拿网上的案例作为练习&#xff0c;但是我们的爬虫可能会对一些…...

真·杂项:资本论阅读笔记(随缘更新)

Chap1 商品与货币 商品的两个属性&#xff1a;使用价值和价值 商品是使用价值和价值的综合体。 使用价值&#xff1a;物品对人有用&#xff0c;价值分为质&#xff08;属性&#xff09;和量&#xff08;多少&#xff09; 交换价值&#xff1a;一种使用价值和另一种使用价值…...

mysql基础-常用sql语句

常用sql语句整理 在mysql中&#xff0c;常用sql语句为&#xff1a; 修改密码&#xff1a; alter user rootlocalhost identified with mysql_native_password BY 新密码; alter user rootlocalhost identified with mysql_native_password BY 123456;DDL&#xff08;Data Def…...

运行时数据区-虚拟机栈

文章目录谈谈你对虚拟机栈的理解栈帧什么是栈帧&#xff08;Stack Frame)当前栈帧栈帧的内部结构局部变量表Slot操作数栈Operand Stack动态链接方法返回地址一些附加信息虚方法和非虚方法方法的调用&#xff1a;虚方法表面试题方法中定义的局部变量是否线程安全&#xff1f;运行…...

双亲委派模型

从Java 虚拟机的角度来讲&#xff0c;只存在两种不同的类加载器&#xff1a;一种是启动类加载器&#xff08;BootstrapClassLoader&#xff09;&#xff0c;这个类加载器使用C语言实现&#xff0c;是虚拟机自身的一部分&#xff1b;另一种就是所有其他的类加载器&#xff0c;这…...

【报告分享】2021中国住宿业市场网络口碑报告-中国饭店协会众荟(附下载)

摘要:通过语义分析进一步了解酒店住宿业在不同服务维度的表现与变化趋势。点评是消费者对酒店服务最真实的反馈&#xff0c;不同服务的观点数&#xff0c;一方面反映消费者对该项服务的关注度&#xff0c;另一方面也反映酒店在营销中的 “有形展示” 是否做得到位&#xff0c;酒…...

Java学习笔记--13.网络编程

Java学习笔记–13 第十章 网络编程 目录Java学习笔记--13前言网络编程1.定义2.TCP通信(1).ServerSocket(2).Socket3.UDP通信(1).发送方(2).接收方前言 21世纪&#xff0c;走进了信息时代&#xff0c;各种各样的软件层出不穷&#xff0c;但是总离不开程序开发&#xff0c;离不…...

JavaScript-DOM、BOM对象

DOM对象 功能&#xff1a;控制html文档的内容 1、获取页面标签(元素)对象&#xff1a;Element 方法&#xff1a;document.getElementById(“id值”)&#xff1a;通过元素id获取元素对象、 2、操作Element对象&#xff1a; 1&#xff09;. 修改属性值&#xff1a; 明确获取的对…...

[高维随机矩阵-2]

本系列主要按照《Introduction to random matrices theory and practice》进行&#xff0c;后续不再一一声明。每次使用新资料&#xff0c;都会在第一次使用时声明&#xff0c;后续也不再一一生明。 1. 本书目标读者是绝对的零基础人员。 2.随机矩阵理论random matirx theory…...

Linux系统管理---RAID磁盘阵列

目录 一、介绍 二、RAID 0&#xff1a; 三、RAID 1&#xff1a; 四、RAID 10&#xff1a; 六、raid 5&#xff1a; 七、预备磁盘功能&#xff08;spare disk&#xff09;&#xff1a; 一、介绍 RAID存储系统是被广泛应用于生产环境的一种存储解决方案。在1978年&#xff0…...

Linux系统管理-用户管理-组管理-2

Linux系统管理2. Linux系统管理2.1用户管理1. 任何使用linux的系统资源的用户&#xff0c;必须使用一个合法的账号和密码&#xff0c;账号和密码一般都是向系统管理员申请。2. 添加用户&#xff1a;useradd [选项] 用户名3. 给用户设置密码&#xff1a;passwd 用户名4. 删除用户…...

实验四 Linux系统管理(一)

文章目录一、实验目的二、实验要求三、实验内容&#xff08;要求详细列出步骤截图&#xff09;一、实验目的 掌握用户管理的基本内容和原理&#xff1b;理解与用户管理有关的工具与命令的具体作用以及关键部分的内容&#xff1b;从用户管理的角度初步理解系统安全管理的具体内…...

Linux基础篇之系统管理

这里写目录标题1. 进程与服务1.1 service 服务管理基本语法(CentOS 6)经验技巧实战演练1.2 chkconfig 设置后台服务的自启配置&#xff08;CentOS 6 版本&#xff09;1.3 systemctl &#xff08;CentOS 7&#xff09;基本语法经验技巧实战演练1.4 systemctl 设置后台服务的自启…...

Linux系统管理常用知识点总结(1-5章)

目录 前言 第一章 基本命令 1.1 cd 切换目录 1.2 绝对路径/相对路径 1.3 pwd 打印当前目录 1.4 touch 创建文件 1.5 mkdir 创建目录 1.6 rm 删除 1.7 cp 复制/改名 1.8 mv 移动/改名 1.9 ls 打印目录 1.10 链接 1.11 du 查看磁盘占用 1.12 find 查找文件 第二章 目…...

“隐藏”自己?Get这些网络安全工具

土耳其石油管道事件、索尼影业被黑事件、社区医疗系统被黑、大型零售商家被黑、心脏流血&#xff08;Heartbleed&#xff09;等事件中。我们可以从中看到&#xff0c;消费级别的数据慢慢沦为被攻击的目标&#xff0c;或许它们离我们很远&#xff0c;又或许它们已经存在于我们的…...

年薪百万的技术面试都问啥?来收下这份必考题葵花宝典吧|套路

随着各大企业纷纷布局区块链&#xff0c;各行业对区块链人才求贤若渴&#xff0c;区块链从业者的待遇也是水涨船高。动辄百万的年薪通证激励&#xff0c;不知你是否已经蠢蠢欲动。不过区块链涉及的领域既多且杂&#xff0c;在面试中你不仅需要有牢固的知识储备&#xff0c;还需…...

从零开始学习 python-爬虫8月12日

在互联网上进行自动数据采集&#xff08;抓取&#xff09;这件事和互联网存在的时间差不多一样长。今天大众好像更倾向于用“网络数据采集”&#xff0c;有时会把网络数据采集程序称为网络机器人&#xff08;bots&#xff09;。最常用的方法是写一个自动化程序向网络服务器请求…...

Python爬虫和反爬虫的斗争

我们常接触的网络爬虫是百度、搜搜、谷歌&#xff08;Google&#xff09;等公司的搜索引擎&#xff0c;这 些搜索引擎通过互联网上的入口获取网页&#xff0c;实时存储并更新索引。搜索引擎的基础 就是网络爬虫&#xff0c;这些网络爬虫通过自动化的方式进行网页浏览并存储相关…...

Python爬虫和反爬虫的斗争!掌握这个10K工作不是问题!

在抓取对方网站、APP 应用的相关数据时&#xff0c;经常会遇到一系列的方法阻止爬虫。一方面是为了保证服务的质量&#xff0c;另一方面是保护数据不被获取。常见的一些反爬虫 和反反爬虫的手段如下。 &#xff08;1&#xff09;IP 限制 IP 限制是很常见的一种反爬虫的方式…...

是德科技DSOX2002A型号示波器的使用

文章目录图使用自检电路单次触发按键恢复出厂设置水平调整区水平位移调整按钮水平时机调整旋钮垂直调整区通道启用按钮垂直档位调节旋钮垂直位移调整旋钮测量区图 使用 自检 黑色鳄鱼夹接地&#xff0c;伸缩探钩挂到左侧。 按下auto按键 使用测量按键可以调出波形的峰峰值与频…...

老卫带你学---python反爬虫与反反爬虫

老卫带你学—python反爬虫与反反爬虫 在抓取对方网站、APP 应用的相关数据时&#xff0c;经常会遇到一系列的方法阻止爬虫。一方面是为了保证服务的质量&#xff0c;另一方面是保护数据不被获取。常见的一些反爬虫 和反反爬虫的手段如下。 &#xff08;1&#xff09;IP 限制 …...

小程序流量主广告赚钱

现在越来越多的商家开始利用小程序商城来卖货盈利&#xff0c; 但是这种模式毕竟太过单一&#xff0c;而且受客户购买力、价格承受能力影响&#xff0c;有时候虽然看的人多&#xff0c;但转化效果却不好。 不过也有其他解决办法&#xff0c;那就是增加小程序流量主广告这样一…...

小程序流量主开通(微信+抖音)

小程序流量主开通&#xff08;可快速开通抖音同样的道理&#xff09; ** 现如今微信小程序很可能就是下一个机会&#xff0c;就像之前的微信公众号&#xff0c;让一大帮人赚了钱&#xff0c;毕竟微信之前说8亿用户&#xff0c;现如今可能就是10亿用户了&#xff0c;而且小程序…...

微信小程序流量主如何开通

现如今互联网流量红利可以说已经枯竭了&#xff0c;作为传统的APP&#xff0c;网站等买量实在是太贵了&#xff0c;而且形成爆品更加困难了&#xff0c;现如今微信小程序很可能就是下一个机会&#xff0c;就像之前的微信公众号&#xff0c;让一大帮人赚了钱&#xff0c;毕竟微信…...

小程序卖货新流量,微信公众号“返佣”来袭

微趋道消息&#xff0c;微信已经开始邀请一批公众号参与返佣商品&#xff08;CPS&#xff09;广告插件功能测试。公众号运营者在图文中插入电影类目的商品&#xff0c;根据商品的实际成交金额及返佣比例&#xff0c;可获得相应的广告分成。公众号返佣商品内测邀请通知 微信返佣…...

如何用抖音小程序如何变现,教你制作自己的小程序之取图流量主项目篇

相信大家在使用抖音的时候&#xff0c;总会看到一些博主在推广小程序&#xff0c;那是怎么赚钱的呢&#xff1f;其实是接入流量主广告来赚钱的。比如看广告下载图片壁纸表情包这些 我们以目前比较火第一种是取图小程序&#xff0c;也就是我们轻平时看到的壁纸表情包头像类的平…...

公众号怎么赚钱新思路,这么运营你也可以轻松获得睡后收入!

“只要能转化&#xff0c;再小的流量都是钱” 关于流量转化 互联网的产品变现的本质&#xff0c;依旧是「转化」。微信公众号的变现&#xff0c;自然也在此列。转化这一步对于微信公众号而言&#xff0c;如同人体的消化功能——流量光进来没用&#xff0c;消化掉&#xff0c;…...

【LIN总线如何测试】——LIN主节点物理层测试

系列文章目录 【LIN总线如何测试】——LIN主节点物理层测试 文章目录 系列文章目录前言🚩一、主节点隐性输出电压测试🚩二、主节点显性输出电压测试🚩三、主节点工作电压范围测试1🚩四、主节点工作电压范围测试2🚩五、主节点收发器GND偏移测试🚩六、ECU 电源断路�…...

微信小程序流量主怎么开通,小程序流量主开通步骤

1、作为小程序的开发者&#xff0c;首先开发程序需要有亮点&#xff0c;毕竟好玩、新颖、有需求&#xff08;这样别人才更好去点击查看&#xff09;&#xff1b; 2、流量主开通的条件是独立访客&#xff08;UV&#xff09;不低于1000&#xff0c;1000人说多不多&#xff0c;说…...