Data Structures & Algorithms
Every lesson is built around a dry run — you watch the memory change, step by step, instead of memorising the shape of a solution.
Data Structures
Arrays
Contiguous, indexable memory — the foundation almost every other data structure builds on.
Strings
Character arrays with their own set of classic patterns — two pointers, sliding window, and more.
Linked List
Nodes linked one direction by pointers instead of contiguous memory.
Doubly Linked List
Nodes linked in both directions, trading extra memory for O(1) backward traversal.
Hash Map
Key → value lookups in O(1) on average — the tool behind counting, “seen it before?” checks, prefix sums and sliding windows.
Stack
Last-in, first-out — the structure behind call stacks, undo history, and expression parsing.
Queue
First-in, first-out — the structure behind task scheduling and breadth-first traversal.
Binary Tree
Hierarchical structures for representing nested relationships and enabling fast search.
Binary Search Tree
A binary tree with an ordering invariant that makes search, insert, and delete O(log n).
Heap
A tree-shaped priority queue that keeps the min or max element accessible in O(1).
Graph
Nodes and edges for modeling networks, dependencies, and paths between things.
Trie (Prefix Tree)
A tree specialized for prefix search over strings — autocomplete's favorite data structure.
Algorithms
Sorting
Comparison and non-comparison based sorting — from bubble sort intuition to quicksort partitioning.
Searching
Binary search and its many disguises across sorted and rotated structures.
Recursion & Backtracking
Breaking problems into smaller versions of themselves, and undoing choices that don't work out.
Dynamic Programming
Turning exponential brute force into polynomial time by remembering what you've already solved.
