Dynamic Programming
📖 Introduction
🎯 What Is Dynamic Programming?
When to Use DP
🔝 Top-Down (Memoization)
Visualizing Memoization
⬆️ Bottom-Up (Tabulation)
Top-Down vs Bottom-Up
Aspect
Top-Down
Bottom-Up
📊 DP Framework
Step-by-Step Approach
🎯 Classic DP Patterns
Pattern 1: Linear DP
Climbing Stairs
House Robber
Maximum Subarray (Kadane's Algorithm)
Pattern 2: 2D Grid DP
Unique Paths
Minimum Path Sum
Pattern 3: Subsequence DP
Longest Increasing Subsequence (LIS)
Longest Common Subsequence (LCS)
Pattern 4: Knapsack Problems
0/1 Knapsack
Unbounded Knapsack (Coin Change)
Pattern 5: String DP
Edit Distance
Palindrome Substrings
Pattern 6: Interval DP
Burst Balloons
🧠 DP Problem Recognition
Key Phrases
Phrase
Likely DP Type
📝 Practice Exercises
Exercise 1: Decode Ways
Exercise 2: Word Break
Exercise 3: Longest Palindromic Substring
🔑 Key Takeaways
🚀 What's Next?
📚 References
Last updated