Talentd
FleetCode
Make and follow sheets.Sign in

Dynamic Programming Problems (673)

Problems tagged with Dynamic Programming. Start with the easy ones, then move to medium and hard.

14 Easy327 Medium332 Hard

Learn these first

1
Array

Most DP solutions store states in arrays or matrices, making array indexing and iteration essential skills.

2
Graph

Many advanced DP problems operate on graphs or trees where states depend on traversal order and node relationships.

3
Recursion

Dynamic Programming often begins with a recursive solution. Understanding recursion helps you identify subproblems and derive DP state transitions.

4
Prefix Sum

Prefix sums are frequently combined with dynamic programming to optimize range calculations and transitions.

5
Memoization

Memoization is the top-down dynamic programming technique that caches recursive results to eliminate repeated computations.

TitleSolutionAcceptDifficultyTopics
Solution79.6%Medium
45. Jump Game IIVideo
Solution43.2%Medium
Array, Dynamic Programming +1· 26 companies
Solution53.7%Medium
Array, Divide and Conquer +1· 64 companies
55. Jump GameVideo
Solution41.2%Medium
Array, Dynamic Programming +1· 33 companies
62. Unique PathsVideo
Solution67.3%Medium
Solution44.9%Medium
Array, Dynamic Programming +1· 9 companies
Solution68.6%Medium
Array, Dynamic Programming +1· 17 companies
72. Edit DistanceVideo
Solution61.5%Medium
Dynamic Programming, String· 24 companies
91. Decode WaysVideo
Solution38.3%Medium
Dynamic Programming, String· 22 companies
Solution45.0%Medium
Dynamic Programming, String· 10 companies
120. TriangleVideo
Solution59.9%Medium
Array, Dynamic Programming· 11 companies
139. Word BreakVideo
Solution49.8%Medium
Array, Dynamic Programming +4· 32 companies
Solution37.3%Medium
Array, Dynamic Programming· 23 companies
198. House RobberVideo
Solution53.6%Medium
Array, Dynamic Programming· 40 companies
213. House Robber IIVideo
Solution45.3%Medium
Array, Dynamic Programming· 19 companies
221. Maximal SquareVideo
Solution50.7%Medium
Array, Dynamic Programming +1· 28 companies
256. Paint HouseVideoPremium
Solution64.3%Medium
Array, Dynamic Programming· 8 companies
264. Ugly Number IIVideo
Solution49.7%Medium
276. Paint FenceVideoPremium
Solution48.3%Medium
Dynamic Programming· 4 companies
294. Flip Game IIVideoPremium
Solution52.2%Medium
Solution59.8%Medium
Array, Binary Search +1· 30 companies
Solution46.6%Medium
Array, Dynamic Programming +1· 5 companies
322. Coin ChangeVideo
Solution49.3%Medium
Array, Breadth-First Search +1· 40 companies
333. Largest BST SubtreeVideoPremium
Solution45.8%Medium
Solution56.3%Medium
Binary Tree, Depth-First Search +2· 13 companies
343. Integer BreakVideo
Solution62.6%Medium
Dynamic Programming, Math· 6 companies
351. Android Unlock PatternsVideoPremium
Solution53.8%Medium
361. Bomb EnemyVideoPremium
Solution52.8%Medium
Array, Dynamic Programming +1· 2 companies
Solution50.1%Medium
Array, Dynamic Programming +2· 6 companies
Solution49.9%Medium
Array, Dynamic Programming +1· 1 company
Solution55.0%Medium
Array, Dynamic Programming· 7 companies
396. Rotate FunctionVideo
Solution54.0%Medium
Array, Dynamic Programming +1· 6 companies
Solution65.0%Medium
Array, Dynamic Programming +1· 7 companies
418. Sentence Screen FittingVideoPremium
Solution36.3%Medium
Array, Dynamic Programming +1· 1 company
Solution57.5%Medium
Array, Dynamic Programming +2· 18 companies
464. Can I WinVideo
Solution31.7%Medium
Bit Manipulation, Bitmask +4· 4 companies
Solution42.3%Medium
Array, Backtracking +3· 9 companies
Showing 1–50 of 324

More about Dynamic Programming

Dynamic Programming (DP) is one of the most important problem-solving techniques in Data Structures and Algorithms. It focuses on breaking complex problems into smaller overlapping subproblems and storing their results so they are not recomputed. By combining optimal substructure with efficient caching, dynamic programming can turn exponential-time recursive solutions into fast polynomial-time algorithms.

In coding interviews, Dynamic Programming frequently appears in medium and hard problems at companies like Google, Amazon, and Meta. Interviewers use DP questions to evaluate your ability to identify patterns, optimize brute-force solutions, and reason about time and space complexity. Many classic interview questions—such as longest increasing subsequence, knapsack, edit distance, and coin change—are all solved using dynamic programming.

Most DP problems start with a recursive idea and then optimize it using techniques such as Memoization or bottom-up tabulation. You often define a state, determine the transition relation, and compute results efficiently using arrays or matrices. Many DP problems also appear alongside other topics like Recursion, Array, and Graph traversal.

Common dynamic programming patterns include:

  • 1D and 2D DP arrays for sequence and grid problems
  • Knapsack-style optimization problems
  • Subsequence and substring DP
  • State compression using Bitmask
  • Range DP and interval-based transitions

You should consider using dynamic programming when a problem has overlapping subproblems and an optimal substructure. If a brute-force recursive solution repeats the same computations multiple times, DP is usually the correct optimization technique. Practicing a wide range of DP questions is the best way to recognize patterns quickly and perform well in technical interviews.

FleetCode provides with explanations, complexity analysis, and curated patterns to help you master this critical algorithmic technique.

Dynamic Programming: common questions

What are common Dynamic Programming patterns?

Common patterns include 1D DP, 2D grid DP, knapsack-style optimization, subsequence and substring DP, interval DP, and state compression with bitmasks. Recognizing these patterns helps reduce complex problems into familiar templates.

What is the best way to learn Dynamic Programming?

The best approach is to first understand recursion and overlapping subproblems, then learn memoization and bottom-up tabulation. Focus on recognizing patterns such as knapsack, subsequence DP, and grid DP. Consistent practice with curated problems significantly improves speed and accuracy.

Is Dynamic Programming important for FAANG interviews?

Yes. Dynamic Programming is one of the most frequently tested algorithmic topics in FAANG-level interviews. Companies often use DP questions to evaluate optimization skills, problem decomposition, and ability to convert recursion into efficient solutions.

How many Dynamic Programming problems should I solve to master DP?

Beginners should start with classic problems like Fibonacci, Climbing Stairs, and Knapsack before moving to harder topics like interval DP or bitmask DP.

What are the best Dynamic Programming problems for coding interviews?

The most common Dynamic Programming interview problems include Coin Change, Longest Increasing Subsequence, Edit Distance, House Robber, and 0/1 Knapsack. These questions teach core DP patterns like state definition, transitions, and optimization.

When should you use Dynamic Programming instead of greedy algorithms?

Use Dynamic Programming when a greedy choice does not always produce the optimal result. DP evaluates multiple possibilities and stores intermediate results, making it suitable for problems with overlapping subproblems and optimal substructure.