Dynamic Programming
18 problems · Easy to Hard · Dynamic programming patterns
Dynamic programming is a technique for solving problems by breaking them into overlapping subproblems and caching intermediate results to avoid redundant computation. This track builds from simple 1D DP problems like Climbing Stairs and Coin Change through 2D grid problems, string matching with LCS and Edit Distance, and culminates in Hard problems including Burst Balloons, Wildcard Matching, and Russian Doll Envelopes.
Why it matters:
DP is consistently cited as the most feared topic in technical interviews — and the most rewarding to master. Interviewers use it because it requires three distinct skills at once: recognizing the overlapping subproblem structure, defining the state correctly, and writing clean transitions. Candidates who solve DP problems confidently signal a level of algorithmic maturity that few others demonstrate.