Overview
Syllabus
— Course Introduction and Visual Intuition
— Fundamentals of Dynamic Programming
— The Staircase Problem: Counting Paths
— Implementing Recursive Solutions
— The Inefficiency of Simple Recursion
— Pattern 1: Memoization Top-Down Approach
— Pattern 2: Tabulation Bottom-Up Approach
— Comparing Memoization vs. Tabulation
— Practice Problem: N-th Tribonacci Number
— Optimization: Min Cost Climbing Stairs
— Constant Transition Pattern and Space Optimization
— Practice Problem: House Robber
— Pattern 3: Grid Problems 2D DP
— Practice Problem: Unique Paths
— Optimizing Space in Grid Problems
— Practice Problem: Unique Paths II With Obstacles
— Pattern 4: Two Sequences
— Practice Problem: Longest Common Subsequence
— Practice Problem: Edit Distance
— Pattern 5: Interval DP
— Practice Problem: Longest Palindromic Subsequence
— Practice Problem: Palindromic Substrings
— Pattern 6: Non-Constant Transition
— Practice Problem: Longest Increasing Subsequence
— Practice Problem: Partition Array for Maximum Sum
— Pattern 7: Knapsack-like Problems
— Practice Problem: Partition Equal Subset Sum
— Practice Problem: Coin Change
— Final Summary and Resources
Taught by
freeCodeCamp.org