Grokking the Coding Interview: Patterns for Coding Questions
Ask Author
Back to course home

0% completed

Vote For New Content
Mohammed Dh Abbas
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