COSC 3320 | Algorithms Resources

December 18, 2023

Resources | Videos and Readings


Leetcode Problems

Divide and Conquer


Backtracking


Dynamic Programming


Graphs

MST Prim & Kruskal

class UnionFind:
    def __init__(self, n):
        self.parents = {}
        self.rank = {}

        for i in range(1, n + 1):
            self.parents[i] = i
            self.rank[i] = 0

    def find(self, nd):
        p = self.parents[nd]

        while p != self.parents[p]:
            self.parents[p] = self.parents[self.parents[p]]
            p = self.parents[p]

        return p

    def union(self, nd1, nd2):
        p1, p2 = self.find(nd1), self.find(nd2)

        if p1 == p2:
            return False

        if self.rank[p1] > self.rank[p2]:
            self.parents[p2] = p1
        elif self.rank[p2] > self.rank[p1]:

Djikstra Shortest Path

Bellman Ford Shortest Path

Topological Sort