并查集 Python实现
1 # 并查集实现 2 class Node: 3 pass 4 5 class UnionFindSet: 6 def __init__(self, nodes): 7 self.fatherDict = dict() 8 self.sizeDict = dict() 9 for node in nodes: 10 self.fatherDict[node] = node 11 self.sizeDict[node] = 1 12 13 # def findHead(self, node): 14 # father = self.fatherDict.get(node) 15 # if node!=father: 16 # father = self.findHead(father) 17 # self.fatherDict[node] = father 18 # return father 19 20 def findHead(self, node): # 找到当前节点的头 21 stack = [] # 每次查询都会优化,经过的节点会直接指向头结点 22 father = self.fatherDict[node] 23 while node != father: 24 stack.append(node) 25 node = father 26 father = self.fatherDict[node] 27 while len(stack) > 0: 28 self.fatherDict[stack.pop()] = father 29 return father 30 31 def isSameSet(self, a, b): 32 return self.findHead(a) == self.findHead(b) 33 34 def uion(self, a, b): # 两集合合并 35 if a is None or b is None: 36 return 37 aHead = self.findHead(a) 38 bHead = self.findHead(b) 39 if aHead != bHead: 40 aSize = self.sizeDict[aHead] 41 bSize = self.sizeDict[bHead] 42 if aSize <= bSize: 43 self.fatherDict[aHead] = bHead 44 self.sizeDict[bHead] = aSize + bSize 45 else: 46 self.fatherDict[bHead] = aHead 47 self.sizeDict[aHead] = aSize + bSize
转载于:https://www.cnblogs.com/icekx/p/9142317.html
并查集 Python实现相关推荐
- [L氏并查集] Python 列表法实现非递归并查集,轻松权重优化。
一般的并查集都是用递归或者新建一个类来实现,这里介绍一种用Python来实现的非递归非函数并查集,这个方法暂时未在其他地方见过,尤其是中文领域目前还未见过,很可能是搜索引擎无法搜索到正确内容的原因,所 ...
- 【Python数据结构】——并查集的实现(查找、合并、集合、实例)
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/7/30 23:12 # @Author : @linlianqin # @S ...
- 数据结构之并查集:并查集解决案例, Python——21
并查集解决案例畅通工程 案例问题介绍: 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可以实现交通 ...
- 数据结构之并查集:并查集的介绍与Python代码实现——18
并查集的介绍 并查集(Union-find)数据结构也称作合并查找集(Merge-find set)或者不相交集数据结构(disjoint-set data structure),它是一种记录了由一个 ...
- LeetCode题库:并查集问题(Python语言实现)
并查集相关知识 并查集常用模板 class UnionSet:def init_tree(self,n):self.fa = [i for i in range(n)] # 必要,记录根节点,也可能是 ...
- 并查集(python代码实现)
并查集 并查集是一种树型的数据结构,用于处理一些不相交集合的合并与查询问题.主要两种操作(合并和查询): 根据两个元素的关系合并两个集合: 查询两个元素是否存在关系(是否在同一个集合中)和查询节点的根 ...
- python【数据结构与算法】并查集引入
文章目录 1 并查集 2 策略 3 代码 1 并查集 Disjoint Set,实际上字面翻译是不相交的集合. 中文名 "并查集" 实际上源自其基本操作: union(X,Y):求 ...
- Python:每日一题之小猪存钱罐(并查集)
题目描述 Byteazar the Dragon 拥有 N 个小猪存钱罐.每一个存钱罐能够用相应的钥匙打开或者被砸开.Byteazar 已经将钥匙放入到一些存钱罐中.现在已知每个钥匙所在的存钱罐,By ...
- 并查集c++代码_[Leetcode 每日精选](本周主题-并查集) 547. 朋友圈
题目难度: 中等 原题链接 今天继续来做并查集的问题, 这道题仍然比较基础, 而且也是个比较接近现实的问题了. 大家在我的公众号"每日精选算法题"中的聊天框中回复 并查集 就能看到 ...
最新文章
- golang zerolog包使用
- PyQt5-关闭窗体显示提示框(窗口界面显示器上居中)-5
- java8中-_java8中的Stream
- 【机器学习】 - 关于合适用均方误差(MSE)何时用交叉熵(cross-entropy)
- django-前端上传图片190912
- 【转】去掉换行符的几个方法
- 聊聊时间管理,不是多人运动那种
- 七个小技巧保护无线网络安全
- 单反相机入门教程视频(48集)
- jQuery设置iframe的高度
- Windows安装zookeeper和kafka
- 海康威视网络摄像头Demo示例研究
- 华为云计算认证考试大纲是什么?华为云计算认证含金量高吗?
- qt 合并单元格 tablewidget 合并单元格
- python二手房使用教程_python爬取安居客二手房网站数据方法分享
- ps添加的阴影怎么去除_去除人物照片脸部阴影的PS技巧
- Java基础——对象和类1(面向对象基本概念)
- 手工从grub引导进入Ubuntu16.04
- 苹果宣布推出新的Mac Mini和MacBook Pro与M2 Pro和M2 Max
- java华容道代码_用java编程 华容道游戏
热门文章
- Java语言基础JavaScript
- mysql中文注释语法报错_Linux系统Python配置MySQL详细教程
- Graphpad Prism计算IC50
- Java实现清屏功能
- Matlab | 用Matlab写一首歌送给女朋友——程序员必备撩妹技能(Matlab源码)
- java system_深入分析java中的System
- python3精要(23)-递归与函数列表
- tensorflow随笔-队列管理器QueueRunner-生产者与消费者
- vb.net2019- 串口serial port通信
- 上海女博士“择偶条件”惹争议,相亲像是在许愿,网友:别做梦了 !