第四题并查集 这样写对吗,没来得及提交 class UnionFind(object):     def __init__(self):         self.uf = [i for i in range(100001)]          def find(self, p):         if self.uf[p] != p:             return self.find(self.uf[p])         else:             return p     def union(self, p, q):         proot = self.find(p)         qroot = self.find(q)         if proot == qroot:             return          elif proot<qroot:             self.uf[q] = proot         else:             self.uf[p] = qroot              uf = UnionFind() half1 = nums[n//2:] half2 = nums[:n//2] for n1,n2 in zip(half1,half2):     if n1!=n2:         uf.union(n1,n2) nums_set = {} for i in range(len(uf.uf)):     if uf.uf[i] != i:         root = uf.find(i)         if root in nums_set:             nums_set[root].append(i)         else:             nums_set[root] = [i] res = 0 for k,v in nums_set.items():     res += len(v) print(res)