Notes from Steven Skiena’s The Algorithm Design Manual and AlgoMonster.

The Algorithm Design Manual

Algorithmic Analysis

Data Structures

Basic Data Structures

Trees

Hashing

Sorting

Divide and Conquer

Basic Divide and Conquer Algorithms

Recurrence Relations

Other Divide and Conquer

Hashing & Randomized Algorithms

Graph Traversal

Weighted Graph Algorithms

Dynamic Programming

NP-Completeness

Dealing with Hard Problems

Miscellaneous