A curated list of resources about practical data structures and algorithms
This section contains a list of resources to learn about dynamic programing
Problems
- LeetCode List of over 300 DP Problems (mostly free)
Courses
- Educative.io Dynamic Programming in Python: Optimizing Programs for Efficiency (paid)
- Grokking Dynamic Programming Patterns for Coding Interviews (paid)
- GeeksForGeeks Dynamic Programming (free)
Videos
- Introduction to Algorithms (MIT 6.006, Fall 2011) Lecture 19. DP I: Fibonacci, Shortest Paths (free)
- Introduction to Algorithms (MIT 6.006, Fall 2011) Lecture 20. DP II: Text Justification, Blackjack (free)
- Introduction to Algorithms (MIT 6.006, Fall 2011) Lecture 21. DP III: Parenthesization, Edit Distance, Knapsack (free)
- Kenny Talks Code Ep.2: Dynamic Programming (Part I) - LeetCode Problems That Got Me Hired (free)
- Kenny Talks Code Ep.5: Dynamic Programming (Part II) - LeetCode Problems That Got Me Hired (free)
Some of these sequences occur in DP problems. Therefore it is handy to know about them and in which problems they occur.
In combinatorial mathematics, the Catalan numbers form a sequence of
natural numbers that occur in various counting problems, often involving
recursively defined objects. They are named after the Belgian mathematician
Eugène Charles Catalan (1814–1894).
Source: Wikipedia
Ten Questions, One Concept - Catalan Numbers and Applications in DP (YouTube)
Catalan Numbers is an important concept and it has so many nice application questions.
The video has following parts:
- 0:00-2:02 - Introduction to Catalan Numbers
- 2:02-5:58 - No of BSTs
- 5:58-6:58 - Unlabelled Trees
- 6:58-10:20 - Parentheses
- 10:20-10:56 - Parentheses with Letters
- 10:56-14:23 - Dyck Words
- 14:23-18:18 - Mountain Ranges
- 18:18-24:50 - Path on Grid
- 24:50-32:00 - Convex Polygon
- 32:00-36:13 - Disjoint Chords
- 36:13-38:45 - Catalan Triangle