Algorithms
Standard algorithms topics from the canonical curriculum.
Core Topics
- Divide and Conquer — Split into subproblems, recurse, combine — then time it by comparing work against leaves.
- Dynamic Programming — Optimal substructure and overlapping subproblems via tables.
- Greedy Algorithms — Make the locally-best choice; prove it with an exchange argument.
- Binary Search — Halve a sorted array each comparison to search in logarithmic time.
- Merge Sort and Quicksort — Two divide-and-conquer sorts and the recurrences that time them.
- Master Theorem — Solve divide-and-conquer recurrences by comparing work to the watershed.
- Minimum Spanning Tree — The cut property, Kruskal's algorithm, and Prim's algorithm.
- Hash Tables — Hashing, collisions, load factor, and expected-O(1) lookup.
- Amortized Analysis — Aggregate, accounting, and potential methods on the dynamic array.
- Union-Find (Disjoint Sets) — Disjoint sets with union by rank and path compression.
- Max-Flow Min-Cut — Ford-Fulkerson augmenting paths and the cut that certifies the max flow.
- NP-Completeness — Verification, polynomial reductions, and what makes a problem NP-complete.
- Approximation Algorithms — Approximation ratios and provably near-optimal algorithms for NP-hard problems.
- Graph Traversal (BFS and DFS) — Queue-based BFS distances and stack-based DFS exploration.
Not sure where to start? Take the ten-question placement test.