Dynamic Programming
Captures overlapping subproblems and optimal substructure. Backbone of FAANG-hard problems.
1.0 1D DP
- Fibonacci, Climbing Stairs
- House Robber
- Coin Change
2.0 2D DP
- Longest common subsequence
- Edit Distance
- DP on grids
3.0 DP with States
- DP[i][j], DP[i][j][k] patterns
- Buy/sell stock with cooldowns
- Knapsack variations
4.0 DP with Choices and Backtracking
- Word Break
- Palindrome Partitioning
- Regex Matching
5.0 Bitmask DP
- Traveling salesman
- Set cover
- Subset state transitions
6.0 Optimized DP Patterns
- Space optimized DP
- Monotonic queue optimization
- Divide and conquer DP