并查集
# 并查集
algsup
这个作者很懒,什么都没留下…
展开
-
[并查集]leetcode765:情侣牵手(hard)
题目: 题解: 并查集的应用题,想到怎么用并查集做很关键。 本题的突破口是交换次数为并查集中的每个连通分量中的组数减1,要是知道这个了,本题也就利用并查集的模板迎刃而解了。 算法步骤: 1)按组遍历row,同组则不要合并,不同组就进行合并,组号为id号除以2。 2)统计每个连通分量的组数。 3)计算交换次数,交换次数就是每个联通分量中的组数-1。 代码如下: class UnionFind { private: vector<int> father原创 2021-02-14 09:42:20 · 287 阅读 · 0 评论 -
[并查集]leetcode721:账户合并(medium)
题目: 题解: 本题是并查集的实际应用题,需要把实际问题转换为我们熟悉的并查集,这点很重要,我本人现在就是很缺乏这种能力,至于怎么提升肯定需要大量做题吧。 思路: 1)构建并查集的模板,然后给n个客户进行并查集的初始化。 2)构建一个map用来记录<邮箱,邮箱id>。对于邮箱相等的客户,我们进行id的合并;对于邮箱不同的客户,我们就用map记录。 3)再构建一个map用来记录<id,邮箱列表>。我们遍历前一个map,将id在同一个联通量中的邮箱,加入邮箱列表。 4)最后再遍原创 2021-02-01 22:45:40 · 243 阅读 · 0 评论