11. Dynamic Programming
🧠DP Strategy
- Define State:
dp[i]ordp[i][j]? What does it represent? - Transition: How do I get to
dp[i]fromdp[i-1]? - Base Case: What is the answer for 0 items?
🟢 1D DP: Basics & Linear
- Climbing Stairs
- Fibonacci Number
- Max Sum Without Adjacent Elements
- Minimum Number of Squares
- Lets Party
- Ways to Decode
- Ways to Send the Signal
- Dice Throw
- String Count
🟡 2D DP: Grids & Paths
- Unique Paths in a Grid
- Grid Unique Paths II
- Min Sum Path in Matrix
- Dungeon Princess
- Min Sum Path in Triangle
- Maximum Path in Triangle
🟠Knapsack Pattern
🔴 Strings (LCS & Editing)
- Longest Common Subsequence
- Longest Palindromic Subsequence
- Edit Distance
- Distinct Subsequences
- Repeating Subsequence
- Interleaving Strings
- Three Strings
- Regular Expression Match
- Regular Expression II