采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
波波老师你好。 对这一段我有疑问:既然这里取的是并集,为什么在两个元素取并集的时候,是取其中一个元素的集合,另一个的集合被扔掉了。 这样并完了之后,10个元素的集合就剩1或0了。 还是说这里的并集并不是数学中的并集?
并查集的并不是把两个元素并在一起,是把两个元素所在的集合并在一起。只不过在初始的条件下,所有的元素都是单独自己各自在一个集合中。随着不断的调用unionElements,元素所在的集合在不断“合并”。
可以尝试使用课程的并查集代码进行如下实验:
public static void main(String[] args) { // 我直接使用这一张最后的UnionFind5进行试验,但是其他版本的UnionFind也是成立的 // 我们只创建包含有3个元素的并查集 UnionFind5 uf = new UnionFind5(3); uf.unionElements(0, 1); // 合并0所在的集合和1所在的集合 // 初始0和1两个元素所在的集合都只有1个元素 // 所以合并后的集合只包含两个元素 uf.unionElements(1, 2); // 和并1所在的集合和2所在的集合 // 注意:此时由于1所在的集合有2个元素(0和1) // 所以,合并后,0, 1, 2三个元素在同一个集合中 // 为了验证,我们查看一下0和2是不是在一个集合中? // 输出为true :-) System.out.print(uf.isConnected(0, 2)); }
请在仔细理解一下,课程中的并查集的实现,是怎么做到这一点的?:)
加油!:)
非常感谢!
昨天主要是看到这两个位置,联系在一起的时候没有理解。
11-1 什么是并查集 04:06~04:08 数学中的集合类的实现
11-2 QuickFind中的 10:25 这里实现的时候是取的其中一个的集合。
是不是也就是说,并查集 就是把两个元素合一起,至于他们所在集合的大小,集合中元素的多少是没有关系的。
抱歉,我没有特别理解你的问题,具体是哪一段?我在问答区看不见你提问时视频的位置,给我一个视频的具体时间?
登录后可查看更多问答,登录/注册
动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…
11.1k 16
1.8k 17
1.6k 14
1.7k 14
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号