- Two pointers: one input, opposite ends
- Two pointers: two inputs, exhaust both
- Sliding window
- Build a prefix sum
- Efficient string building
- Linked list: fast and slow pointer
- Reversing a linked list
- Find number of subarrays that fit an exact criteria
- Monotonic increasing stack
- Binary tree: DFS (recursive)
- Binary tree: DFS (iterative)
- Binary tree: BFS
- Graph: DFS (recursive)
- Graph: DFS (iterative)
- Graph: BFS
- Find top k elements with heap
- Binary search
- Binary search: duplicate elements, left-most insertion point
- Binary search: duplicate elements, right-most insertion point