Dynamic Programming LeetCode Problems: All 481, With Python Solutions

Every problem in this library that LeetCode tags Dynamic Programming 481 in total, 416 of them with a complete Python solution, a worked example and the time and space complexity of the approach.

  • 481 problems
  • 12 Easy
  • 243 Medium
  • 226 Hard

How Dynamic Programming problems are solved

A tag names the subject, not the method. These pattern hubs cover the techniques that actually solve Dynamic Programming problems — each one explains the approach, gives a Python template and states its complexity.

  • Dynamic Programming — Define a state, write the transition, and stop recomputing the same subproblem.

Dynamic Programming problems by difficulty

Showing the first 200 of 481 problems. Problems with a complete Python solution are listed first, then by ascending problem number.

Easy (10)

#ProblemDifficultyTopics
70Climbing StairsEasyMemoization, Math, Dynamic Programming
118Pascal's TriangleEasyArray, Dynamic Programming
119Pascal's Triangle IIEasyArray, Dynamic Programming
121Best Time to Buy and Sell StockEasyArray, Dynamic Programming
338Counting BitsEasyBit Manipulation, Dynamic Programming
392Is SubsequenceEasyTwo Pointers, String, Dynamic Programming
509Fibonacci NumberEasyRecursion, Memoization, Math +1
746Min Cost Climbing StairsEasyArray, Dynamic Programming
1025Divisor GameEasyBrainteaser, Math, Dynamic Programming +1
1137N-th Tribonacci NumberEasyMemoization, Math, Dynamic Programming

Medium (111)

#ProblemDifficultyTopics
5Longest Palindromic SubstringMediumTwo Pointers, String, Dynamic Programming
22Generate ParenthesesMediumString, Dynamic Programming, Backtracking
45Jump Game IIMediumGreedy, Array, Dynamic Programming
53Maximum SubarrayMediumArray, Divide and Conquer, Dynamic Programming
55Jump GameMediumGreedy, Array, Dynamic Programming
62Unique PathsMediumMath, Dynamic Programming, Combinatorics
63Unique Paths IIMediumArray, Dynamic Programming, Matrix
64Minimum Path SumMediumArray, Dynamic Programming, Matrix
72Edit DistanceMediumString, Dynamic Programming
91Decode WaysMediumString, Dynamic Programming
95Unique Binary Search Trees IIMediumTree, Binary Search Tree, Dynamic Programming +2
96Unique Binary Search TreesMediumTree, Binary Search Tree, Math +2
97Interleaving StringMediumString, Dynamic Programming
120TriangleMediumArray, Dynamic Programming
122Best Time to Buy and Sell Stock IIMediumGreedy, Array, Dynamic Programming
131Palindrome PartitioningMediumString, Dynamic Programming, Backtracking
139Word BreakMediumTrie, Memoization, Array +3
152Maximum Product SubarrayMediumArray, Dynamic Programming
198House RobberMediumArray, Dynamic Programming
213House Robber IIMediumArray, Dynamic Programming
221Maximal SquareMediumArray, Dynamic Programming, Matrix
241Different Ways to Add ParenthesesMediumRecursion, Memoization, Math +2
264Ugly Number IIMediumHash Table, Math, Dynamic Programming +1
279Perfect SquaresMediumBreadth-First Search, Math, Dynamic Programming
300Longest Increasing SubsequenceMediumArray, Binary Search, Dynamic Programming
309Best Time to Buy and Sell Stock with CooldownMediumArray, Dynamic Programming
313Super Ugly NumberMediumArray, Math, Dynamic Programming
322Coin ChangeMediumBreadth-First Search, Array, Dynamic Programming
337House Robber IIIMediumTree, Depth-First Search, Dynamic Programming +1
343Integer BreakMediumMath, Dynamic Programming
357Count Numbers with Unique DigitsMediumMath, Dynamic Programming, Backtracking
368Largest Divisible SubsetMediumArray, Math, Dynamic Programming +1
375Guess Number Higher or Lower IIMediumMath, Dynamic Programming, Game Theory
376Wiggle SubsequenceMediumGreedy, Array, Dynamic Programming
377Combination Sum IVMediumArray, Dynamic Programming
396Rotate FunctionMediumArray, Math, Dynamic Programming
397Integer ReplacementMediumGreedy, Bit Manipulation, Memoization +1
413Arithmetic SlicesMediumArray, Dynamic Programming, Sliding Window
416Partition Equal Subset SumMediumArray, Dynamic Programming
435Non-overlapping IntervalsMediumGreedy, Array, Dynamic Programming +1
464Can I WinMediumBit Manipulation, Memoization, Math +3
467Unique Substrings in Wraparound StringMediumString, Dynamic Programming
473Matchsticks to SquareMediumBit Manipulation, Array, Dynamic Programming +2
474Ones and ZeroesMediumArray, String, Dynamic Programming
486Predict the WinnerMediumRecursion, Array, Math +2
494Target SumMediumArray, Dynamic Programming, Backtracking
516Longest Palindromic SubsequenceMediumString, Dynamic Programming
518Coin Change IIMediumArray, Dynamic Programming
526Beautiful ArrangementMediumBit Manipulation, Array, Dynamic Programming +2
54201 MatrixMediumBreadth-First Search, Array, Dynamic Programming +1
553Optimal DivisionMediumArray, Math, Dynamic Programming
576Out of Boundary PathsMediumDynamic Programming
583Delete Operation for Two StringsMediumString, Dynamic Programming
638Shopping OffersMediumBit Manipulation, Memoization, Array +3
646Maximum Length of Pair ChainMediumGreedy, Array, Dynamic Programming +1
647Palindromic SubstringsMediumTwo Pointers, String, Dynamic Programming
6502 Keys KeyboardMediumMath, Dynamic Programming
673Number of Longest Increasing SubsequenceMediumBinary Indexed Tree, Segment Tree, Array +1
678Valid Parenthesis StringMediumStack, Greedy, String +1
688Knight Probability in ChessboardMediumDynamic Programming
698Partition to K Equal Sum SubsetsMediumBit Manipulation, Memoization, Array +3
712Minimum ASCII Delete Sum for Two StringsMediumString, Dynamic Programming
714Best Time to Buy and Sell Stock with Transaction FeeMediumGreedy, Array, Dynamic Programming
718Maximum Length of Repeated SubarrayMediumArray, Binary Search, Dynamic Programming +3
740Delete and EarnMediumArray, Hash Table, Dynamic Programming
764Largest Plus SignMediumArray, Dynamic Programming
787Cheapest Flights Within K StopsMediumDepth-First Search, Breadth-First Search, Graph +3
788Rotated DigitsMediumMath, Dynamic Programming
790Domino and Tromino TilingMediumDynamic Programming
792Number of Matching SubsequencesMediumTrie, Array, Hash Table +4
799Champagne TowerMediumDynamic Programming
808Soup ServingsMediumMath, Dynamic Programming, Probability and Statistics
813Largest Sum of AveragesMediumArray, Dynamic Programming, Prefix Sum
823Binary Trees With FactorsMediumArray, Hash Table, Dynamic Programming +1
837New 21 GameMediumMath, Dynamic Programming, Sliding Window +1
838Push DominoesMediumTwo Pointers, String, Dynamic Programming
845Longest Mountain in ArrayMediumArray, Two Pointers, Dynamic Programming +1
873Length of Longest Fibonacci SubsequenceMediumArray, Hash Table, Dynamic Programming
877Stone GameMediumArray, Math, Dynamic Programming +1
894All Possible Full Binary TreesMediumTree, Recursion, Memoization +2
898Bitwise ORs of SubarraysMediumBit Manipulation, Array, Dynamic Programming
907Sum of Subarray MinimumsMediumStack, Array, Dynamic Programming +1
918Maximum Sum Circular SubarrayMediumQueue, Array, Divide and Conquer +2
926Flip String to Monotone IncreasingMediumString, Dynamic Programming
931Minimum Falling Path SumMediumArray, Dynamic Programming, Matrix
935Knight DialerMediumDynamic Programming
978Longest Turbulent SubarrayMediumArray, Dynamic Programming, Sliding Window
983Minimum Cost For TicketsMediumArray, Dynamic Programming
1014Best Sightseeing PairMediumArray, Dynamic Programming
1024Video StitchingMediumGreedy, Array, Dynamic Programming
1027Longest Arithmetic SubsequenceMediumArray, Hash Table, Binary Search +1
1031Maximum Sum of Two Non-Overlapping SubarraysMediumArray, Dynamic Programming, Sliding Window
1035Uncrossed LinesMediumArray, Dynamic Programming
1039Minimum Score Triangulation of PolygonMediumArray, Dynamic Programming
1043Partition Array for Maximum SumMediumArray, Dynamic Programming
1048Longest String ChainMediumArray, Hash Table, Two Pointers +3
1049Last Stone Weight IIMediumArray, Dynamic Programming
1105Filling Bookcase ShelvesMediumArray, Dynamic Programming
1130Minimum Cost Tree From Leaf ValuesMediumStack, Greedy, Array +2
1139Largest 1-Bordered SquareMediumArray, Dynamic Programming, Matrix
1140Stone Game IIMediumArray, Math, Dynamic Programming +2
1143Longest Common SubsequenceMediumString, Dynamic Programming
1155Number of Dice Rolls With Target SumMediumDynamic Programming
1162As Far from Land as PossibleMediumBreadth-First Search, Array, Dynamic Programming +1
1186Maximum Subarray Sum with One DeletionMediumArray, Dynamic Programming
1191K-Concatenation Maximum SumMediumArray, Dynamic Programming
1218Longest Arithmetic Subsequence of Given DifferenceMediumArray, Hash Table, Dynamic Programming
1227Airplane Seat Assignment ProbabilityMediumBrainteaser, Math, Dynamic Programming +1
1262Greatest Sum Divisible by ThreeMediumGreedy, Array, Dynamic Programming +1
1277Count Square Submatrices with All OnesMediumArray, Dynamic Programming, Matrix
1334Find the City With the Smallest Number of Neighbors at a Threshold DistanceMediumGraph, Dynamic Programming, Shortest Path

Hard (79)

#ProblemDifficultyTopics
10Regular Expression MatchingHardRecursion, String, Dynamic Programming
32Longest Valid ParenthesesHardStack, String, Dynamic Programming
42Trapping Rain WaterHardStack, Array, Two Pointers +2
44Wildcard MatchingHardGreedy, Recursion, String +1
85Maximal RectangleHardStack, Array, Dynamic Programming +2
87Scramble StringHardString, Dynamic Programming
115Distinct SubsequencesHardString, Dynamic Programming
123Best Time to Buy and Sell Stock IIIHardArray, Dynamic Programming
124Binary Tree Maximum Path SumHardTree, Depth-First Search, Dynamic Programming +1
132Palindrome Partitioning IIHardString, Dynamic Programming
140Word Break IIHardTrie, Memoization, Array +4
174Dungeon GameHardArray, Dynamic Programming, Matrix
188Best Time to Buy and Sell Stock IVHardArray, Dynamic Programming
233Number of Digit OneHardRecursion, Math, Dynamic Programming
312Burst BalloonsHardArray, Dynamic Programming
329Longest Increasing Path in a MatrixHardDepth-First Search, Breadth-First Search, Graph +5
354Russian Doll EnvelopesHardArray, Binary Search, Dynamic Programming +1
403Frog JumpHardArray, Dynamic Programming
410Split Array Largest SumHardGreedy, Array, Binary Search +2
446Arithmetic Slices II - SubsequenceHardArray, Dynamic Programming
458Poor PigsHardMath, Dynamic Programming, Combinatorics
466Count The RepetitionsHardString, Dynamic Programming
472Concatenated WordsHardDepth-First Search, Trie, Array +3
488Zuma GameHardStack, Breadth-First Search, Memoization +2
514Freedom TrailHardDepth-First Search, Breadth-First Search, String +1
546Remove BoxesHardMemoization, Array, Dynamic Programming
552Student Attendance Record IIHardDynamic Programming
600Non-negative Integers without Consecutive OnesHardDynamic Programming
629K Inverse Pairs ArrayHardDynamic Programming
639Decode Ways IIHardString, Dynamic Programming
664Strange PrinterHardString, Dynamic Programming
689Maximum Sum of 3 Non-Overlapping SubarraysHardArray, Dynamic Programming, Prefix Sum +1
691Stickers to Spell WordHardBit Manipulation, Memoization, Array +5
730Count Different Palindromic SubsequencesHardString, Dynamic Programming
741Cherry PickupHardArray, Dynamic Programming, Matrix
773Sliding PuzzleHardBreadth-First Search, Memoization, Array +3
801Minimum Swaps To Make Sequences IncreasingHardArray, Dynamic Programming
805Split Array With Same AverageHardBit Manipulation, Array, Math +2
818Race CarHardDynamic Programming
828Count Unique Characters of All Substrings of a Given StringHardHash Table, String, Dynamic Programming
834Sum of Distances in TreeHardTree, Depth-First Search, Graph +1
847Shortest Path Visiting All NodesHardBit Manipulation, Breadth-First Search, Graph +2
871Minimum Number of Refueling StopsHardGreedy, Array, Dynamic Programming +1
879Profitable SchemesHardArray, Dynamic Programming
887Super Egg DropHardMath, Binary Search, Dynamic Programming
902Numbers At Most N Given Digit SetHardArray, Math, String +2
903Valid Permutations for DI SequenceHardString, Dynamic Programming, Prefix Sum
913Cat and MouseHardGraph, Topological Sort, Memoization +3
920Number of Music PlaylistsHardMath, Dynamic Programming, Combinatorics
940Distinct Subsequences IIHardString, Dynamic Programming
943Find the Shortest SuperstringHardBit Manipulation, Array, String +2
956Tallest BillboardHardArray, Dynamic Programming
960Delete Columns to Make Sorted IIIHardArray, String, Dynamic Programming
964Least Operators to Express NumberHardMemoization, Math, Dynamic Programming
968Binary Tree CamerasHardTree, Depth-First Search, Dynamic Programming +1
975Odd Even JumpHardStack, Array, Dynamic Programming +3
996Number of Squareful ArraysHardBit Manipulation, Array, Hash Table +4
1000Minimum Cost to Merge StonesHardArray, Dynamic Programming, Prefix Sum
1012Numbers With Repeated DigitsHardMath, Dynamic Programming
1092Shortest Common SupersequenceHardString, Dynamic Programming
1125Smallest Sufficient TeamHardBit Manipulation, Array, Dynamic Programming +1
1147Longest Chunked Palindrome DecompositionHardGreedy, Two Pointers, String +3
1187Make Array Strictly IncreasingHardArray, Binary Search, Dynamic Programming +1
1220Count Vowels PermutationHardDynamic Programming
1223Dice Roll SimulationHardArray, Dynamic Programming
1235Maximum Profit in Job SchedulingHardArray, Binary Search, Dynamic Programming +1
1255Maximum Score Words Formed by LettersHardBit Manipulation, Array, Hash Table +5
1269Number of Ways to Stay in the Same Place After Some StepsHardDynamic Programming
1278Palindrome Partitioning IIIHardString, Dynamic Programming
1289Minimum Falling Path Sum IIHardArray, Dynamic Programming, Matrix
1301Number of Paths with Max ScoreHardArray, Dynamic Programming, Matrix
1312Minimum Insertion Steps to Make a String PalindromeHardString, Dynamic Programming
1320Minimum Distance to Type a Word Using Two FingersHardString, Dynamic Programming
1326Minimum Number of Taps to Open to Water a GardenHardGreedy, Array, Dynamic Programming
1335Minimum Difficulty of a Job ScheduleHardArray, Dynamic Programming
1340Jump Game VHardArray, Dynamic Programming, Sorting
1349Maximum Students Taking ExamHardBit Manipulation, Array, Dynamic Programming +2
1359Count All Valid Pickup and Delivery OptionsHardMath, Dynamic Programming, Combinatorics
1363Largest Multiple of ThreeHardGreedy, Array, Math +2

When the Dynamic Programming problem arrives live

Stealth Interview is a desktop app for macOS and Windows. It reads the coding problem off your screen, returns a working solution with a step-by-step explanation and its time and space complexity, and transcribes what the interviewer is saying — while staying invisible to screen sharing.