第四题并查集 这样写对吗,没来得及提交 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)

相关推荐

05-29 20:34
门头沟学院 C++
KarlAllen_直通春招版:得做好直接春招的准备。学历差的话,一是面试要求会比学历好的严格不少,二是就算面试通过了也会被排序。总之暑期和秋招对于学历差的就是及其不友好
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务