Week 1: Dynamic Programming Techniques
Expand on DP strategies like coordinate DP, single and double sequence DP.
Day 1: Memorization
Focus on identifying overlapping subproblems and applying memorization for optimization.
Day 2: Practice Session
Solve memorization-based problems and review interview tips.
Day 3: DP Introduction and Coordinate DP
Learn how to approach DP problems that involve coordinate transformation techniques.
Day 4: DP with Single Sequence
Dive into single-sequence DP problems and understand the transition function.
Day 5: DP with Double Sequence
Solve problems with double-sequence DP, such as Longest Common Subsequence (LCS).
Week 2: Dynamic Programming Techniques II
Advanced DP strategies like interval and backpack problems, and game theory.
Day 6: DP with Interval
Learn how to solve interval DP problems and define transition functions.
Day 7: DP with Backpack
Explore backpack problems and optimize solutions using rolling arrays.
Day 8: DP with Game Theory
Solve game theory problems using DP, including optimal strategies for two-player games.
Day 9: Practice Session
Review common DP problem categories, including interval, backpack, and game theory.
Day 10: Practice Session
Continue practicing advanced DP problems from various categories.
Week 3: Optimization and Advanced Techniques
Cover advanced algorithms like prefix sum and monotonic stack, and refine binary search strategies.
Day 12: Prefix Sum
Learn the prefix sum technique and apply it to solve various range query problems.
Day 13: Monotonic Stack
Understand the monotonic stack and how it is used in problems like trapping rainwater.
Day 14: Binary Search Advanced
Master advanced binary search techniques for optimization problems on ranges and results.
Day 15: Two Pointers with Partition
Learn quickselect applications and use the two-pointer technique for partition-based problems.
Week 4: Union Find, Trie, and Segment Tree
Explore advanced data structures and their applications in complex problem-solving.
Day 16: Union Find
Learn the union-find (disjoint-set) data structure and its applications in dynamic connectivity problems.
Day 17: Trie
Dive into the trie data structure and explore its use cases for string manipulation.
Day 18: Segment Tree
Understand and implement segment trees for solving range query problems efficiently.
Day 19: Practice Session
Apply union-find, trie, and segment tree to high-frequency problems.
Day 20: Practice Session
Continue practicing with advanced problems related to these complex data structures.