Leetcode 684 Solution

This article provides solution to leetcode question 684 (redundant-connection)

https://leetcode.com/problems/redundant-connection

Solution

class FindUnionSet:
    def __init__(self, N):
        self.p = list(range(N))

    def find(self, i):
        if self.p[i] != i:
            self.p[i] = self.find(self.p[i])
        return self.p[i]

    def union(self, i, j):
        pi = self.find(i)
        pj = self.find(j)
        self.p[pi] = pj


class Solution:
    def findRedundantConnection(self, edges: List[List[int]]) -> List[int]:
        N = max([max(src, dst) for src, dst in edges])
        fuset = FindUnionSet(N + 1)
        for src, dst in edges:
            if fuset.find(src) == fuset.find(dst):
                return [src, dst]
            fuset.union(src, dst)