题目链接 Leetcode-765
解题思路
对于一堆坐错位置的情侣的集合,只要按照首位相连环路交换位置即可,此种交换位置的方法一定是最少的,次数为情侣数量-1。
因此下一步的目标即寻找互相独立的情侣的集合,以及每个集合的情侣数量。
可以用并查集的方法来解决。编号为n, n+1 的两个人组成情侣编号为 n/2,以此编号来作为节点执行并查集算法
然后利用 map 记录每个并查集集合的大小 \(size_i\),再返回 \(\sum{size_i-1}\)
代码示例
1 | def minSwapCouple(row): |