Back to course home
0% completed
Vote For New Content
My solution with ranking / UnionFind using Hash Map instead of array
Mohammed Dh Abbas
Aug 1, 2024
class UnionFind: def __init__(self): self.rank = {} self.parents = {} def find(self, u): parent = self.parents.get(u, u) if parent == u: self.parents[u] = u return u self.parents[u] = self.find(parent) return self.parents[u] def union(self, u, v): par_u = self.find(u) par_v = self.find(v) if par_u == par_v: return if self.rank.get(par_u, 1) < self.rank.get(par_v, 1): self.parents[par_u] = v elif self.rank.get(par_v, 1) < self.rank.get(par_u, 1): self.parents[par_v] = u else: self.parents[par_u] = v self.rank[par_u] = self.rank.get(par_u, 1) + 1 class Solution: def findRedundantConnection(self, edges): uf = UnionFind() for u, v in edges: p_u = uf.find(u) p_v = uf.find(v) print(p_u, p_v) if p_u != p_v: uf.union(u, v) else: return [u, v] return []
0
0
Comments
Comments