← All patterns
Dynamic Programming

DP on Grids

246 practice questions|Medium

When to use it

Accumulate transition paths on a 2D matrix from top-left to bottom-right.

Key Signals & Indicators

  • Input is a 2D matrix or grid layout
  • Finding paths or optimization metrics from source to destination (e.g. min path sum)
  • Allowed directions are constrained (e.g. only down and right)

Pattern Boilerplate

c++
// C++ DP on Grids Template
#include <vector>
#include <algorithm>

int minPathSumGrid(const std::vector<std::vector<int>>& grid) {
    if (grid.empty()) return 0;
    int rows = grid.size();
    int cols = grid[0].size();
    
    std::vector<std::vector<int>> dp(rows, std::vector<int>(cols, 0));
    dp[0][0] = grid[0][0];
    
    // Fill first row
    for (int c = 1; c < cols; ++c) dp[0][c] = dp[0][c - 1] + grid[0][c];
    // Fill first col
    for (int r = 1; r < rows; ++r) dp[r][0] = dp[r - 1][0] + grid[r][0];
    
    // Fill the rest of the grid
    for (int r = 1; r < rows; ++r) {
        for (int c = 1; c < cols; ++c) {
            dp[r][c] = grid[r][c] + std::min(dp[r - 1][c], dp[r][c - 1]);
        }
    }
    return dp[rows - 1][cols - 1];
}

Problems using this pattern

101 MatrixMedium
ArrayDynamic ProgrammingBreadth-First Search
Solve →
2As Far from Land as PossibleMedium
ArrayDynamic ProgrammingBreadth-First Search
Solve →
3Available Captures for RookEasy
ArrayMatrixSimulation
Solve →
4Battleships in a BoardMedium
ArrayDepth-First SearchMatrix
Solve →
5Best Meeting PointHard
ArrayMathSorting
Solve →
6Bomb EnemyMedium
ArrayDynamic ProgrammingMatrix
Solve →
7Bricks Falling When HitHard
ArrayUnion-FindMatrix
Solve →
8Build a Matrix With ConditionsHard
ArrayGraph TheoryTopological Sort
Solve →
9Candy CrushMedium
ArrayTwo PointersMatrix
Solve →
10Cat and Mouse IIHard
ArrayMathDynamic Programming
Solve →
11Check if Every Row and Column Contains All NumbersEasy
ArrayHash TableMatrix
Solve →
12Check if Matrix Is X-MatrixEasy
ArrayMatrix
Solve →
13Check if Move is LegalMedium
ArrayMatrixEnumeration
Solve →
14Check if There is a Path With Equal Number of 0's And 1'sMedium
ArrayDynamic ProgrammingMatrix
Solve →
15 Check if There Is a Valid Parentheses String PathHard
ArrayDynamic ProgrammingMatrix
Solve →
16Check if There is a Valid Path in a GridMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
17Check if Word Can Be Placed In CrosswordMedium
ArrayMatrixEnumeration
Solve →
18Check Knight Tour ConfigurationMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
19Cherry Pickup IIHard
ArrayDynamic ProgrammingMatrix
Solve →
20Cherry PickupHard
ArrayDynamic ProgrammingMatrix
Solve →
21Coloring A BorderMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
22Construct Product MatrixMedium
ArrayMatrixPrefix Sum
Solve →
23Construct Quad TreeMedium
ArrayDivide and ConquerTree
Solve →
24Contain VirusHard
ArrayDepth-First SearchBreadth-First Search
Solve →
25Convert 1D Array Into 2D ArrayEasy
ArrayMatrixSimulation
Solve →
26Count Cells in Overlapping Horizontal and Vertical SubstringsMedium
ArrayStringRolling Hash
Solve →
27Count Fertile Pyramids in a LandHard
ArrayDynamic ProgrammingMatrix
Solve →
28Count Islands With Total Value Divisible by KMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
29Count Negative Numbers in a Sorted MatrixEasy
ArrayBinary SearchMatrix
Solve →
30Count Paths With the Given XOR ValueMedium
ArrayDynamic ProgrammingBit Manipulation
Solve →
31Count Routes to Climb a Rectangular GridHard
ArrayDynamic ProgrammingMatrix
Solve →
32Count Servers that CommunicateMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
33Count Square Submatrices with All OnesMedium
ArrayDynamic ProgrammingMatrix
Solve →
34Count Sub IslandsMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
35Count Submatrices With All OnesMedium
ArrayDynamic ProgrammingStack
Solve →
36Count Submatrices With Equal Frequency of X and YMedium
ArrayMatrixPrefix Sum
Solve →
37Count Submatrices with Top-Left Element and Sum Less Than kMedium
ArrayMatrixPrefix Sum
Solve →
38Count Unguarded Cells in the GridMedium
ArrayMatrixSimulation
Solve →
39Cut Off Trees for Golf EventHard
ArrayBreadth-First SearchHeap (Priority Queue)
Solve →
40Delete Greatest Value in Each RowEasy
ArraySortingHeap (Priority Queue)
Solve →
41Design a 3D Binary Matrix with Efficient Layer TrackingMedium
ArrayHash TableDesign
Solve →
42Design Excel Sum FormulaHard
ArrayHash TableString
Solve →
43Design SpreadsheetMedium
ArrayHash TableString
Solve →
44Design Tic-Tac-ToeMedium
ArrayHash TableDesign
Solve →
45Detect Cycles in 2D GridMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
46Determine Whether Matrix Can Be Obtained By RotationEasy
ArrayMatrix
Solve →
47Diagonal TraverseMedium
ArrayMatrixSimulation
Solve →
48Difference Between Ones and Zeros in Row and ColumnMedium
ArrayMatrixSimulation
Solve →
49Disconnect Path in a Binary Matrix by at Most One FlipMedium
ArrayDynamic ProgrammingDepth-First Search
Solve →
50Dungeon GameHard
ArrayDynamic ProgrammingMatrix
Solve →
51Equal Row and Column PairsMedium
ArrayHash TableMatrix
Solve →
52Escape the Spreading FireHard
ArrayBinary SearchBreadth-First Search
Solve →
53Fill a Special GridMedium
ArrayDivide and ConquerMatrix
Solve →
54Find a Peak Element IIMedium
ArrayBinary SearchMatrix
Solve →
55Find a Safe Walk Through a GridMedium
ArrayBreadth-First SearchGraph Theory
Solve →
56Find All Groups of FarmlandMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
57Find Champion IEasy
ArrayMatrix
Solve →
58Find Kth Largest XOR Coordinate ValueMedium
ArrayDivide and ConquerBit Manipulation
Solve →
59Find Minimum Time to Reach Last Room IMedium
ArrayGraph TheoryHeap (Priority Queue)
Solve →
60Find Minimum Time to Reach Last Room IIMedium
ArrayGraph TheoryHeap (Priority Queue)
Solve →
61Find Missing and Repeated ValuesEasy
ArrayHash TableMath
Solve →
62Find Smallest Common Element in All RowsMedium
ArrayHash TableBinary Search
Solve →
63Find the Grid of Region AverageMedium
ArrayMatrix
Solve →
64Find the Kth Smallest Sum of a Matrix With Sorted RowsHard
ArrayBinary SearchHeap (Priority Queue)
Solve →
65Find the Maximum Number of Fruits CollectedHard
ArrayDynamic ProgrammingMatrix
Solve →
66Find the Minimum Area to Cover All Ones IMedium
ArrayMatrix
Solve →
67Find the Minimum Area to Cover All Ones IIHard
ArrayMatrixEnumeration
Solve →
68Find the Safest Path in a GridMedium
ArrayBinary SearchBreadth-First Search
Solve →
69Find the String with LCPHard
ArrayStringDynamic Programming
Solve →
70Find the Width of Columns of a GridEasy
ArrayMatrix
Solve →
71Find Valid Matrix Given Row and Column SumsMedium
ArrayGreedyMatrix
Solve →
72Find Winner on a Tic Tac Toe GameEasy
ArrayHash TableMatrix
Solve →
73First Completely Painted Row or ColumnMedium
ArrayHash TableMatrix
Solve →
74Flip Columns For Maximum Number of Equal RowsMedium
ArrayHash TableMatrix
Solve →
75Flipping an ImageEasy
ArrayTwo PointersBit Manipulation
Solve →
76Flood FillEasy
ArrayDepth-First SearchBreadth-First Search
Solve →
77Game of LifeMedium
ArrayMatrixSimulation
Solve →
78Get Biggest Three Rhombus Sums in a GridMedium
ArrayMathSorting
Solve →
79Grid GameMedium
ArrayMatrixPrefix Sum
Solve →
80Grid Teleportation TraversalMedium
ArrayHash TableBreadth-First Search
Solve →
81Image OverlapMedium
ArrayMatrix
Solve →
82Image SmootherEasy
ArrayMatrix
Solve →
83Increment Submatrices by OneMedium
ArrayMatrixPrefix Sum
Solve →
84Island PerimeterEasy
ArrayDepth-First SearchBreadth-First Search
Solve →
85K Highest Ranked Items Within a Price RangeMedium
ArrayBreadth-First SearchSorting
Solve →
86Kth Smallest Element in a Sorted MatrixMedium
ArrayBinary SearchSorting
Solve →
87Largest 1-Bordered SquareMedium
ArrayDynamic ProgrammingMatrix
Solve →
88Largest Local Values in a MatrixEasy
ArrayMatrix
Solve →
89Largest Magic SquareMedium
ArrayMatrixPrefix Sum
Solve →
90Largest Submatrix With RearrangementsMedium
ArrayGreedySorting
Solve →
91Last Day Where You Can Still CrossHard
ArrayBinary SearchDepth-First Search
Solve →
92Leftmost Column with at Least a OneMedium
ArrayBinary SearchMatrix
Solve →
93Length of Longest V-Shaped Diagonal SegmentHard
ArrayDynamic ProgrammingMemoization
Solve →
94Lonely Pixel IMedium
ArrayHash TableMatrix
Solve →
95Lonely Pixel IIMedium
ArrayHash TableMatrix
Solve →
96Longest Increasing Path in a MatrixHard
ArrayDynamic ProgrammingDepth-First Search
Solve →
97Longest Line of Consecutive One in MatrixMedium
ArrayDynamic ProgrammingMatrix
Solve →
98Lucky Numbers in a MatrixEasy
ArrayMatrix
Solve →
99Magic Squares In GridMedium
ArrayHash TableMath
Solve →
100Making A Large IslandHard
ArrayDepth-First SearchBreadth-First Search
Solve →
101Map of Highest PeakMedium
ArrayBreadth-First SearchMatrix
Solve →
102Match Alphanumerical Pattern in Matrix IMedium
ArrayHash TableString
Solve →
103Matrix Block SumMedium
ArrayMatrixPrefix Sum
Solve →
104Matrix Cells in Distance OrderEasy
ArrayMathGeometry
Solve →
105Matrix Diagonal SumEasy
ArrayMatrix
Solve →
106Matrix Similarity After Cyclic ShiftsEasy
ArrayMathMatrix
Solve →
107Max Area of IslandMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
108Max Increase to Keep City SkylineMedium
ArrayGreedyMatrix
Solve →
109Max Sum of Rectangle No Larger Than KHard
ArrayBinary SearchMatrix
Solve →
110Maximal RectangleHard
ArrayDynamic ProgrammingStack
Solve →
111Maximal SquareMedium
ArrayDynamic ProgrammingMatrix
Solve →
112Maximum Amount of Money Robot Can EarnMedium
ArrayDynamic ProgrammingMatrix
Solve →
113Maximum Difference Score in a GridMedium
ArrayDynamic ProgrammingMatrix
Solve →
114Maximum Matrix SumMedium
ArrayGreedyMatrix
Solve →
115Maximum Non Negative Product in a MatrixMedium
ArrayDynamic ProgrammingMatrix
Solve →
116Maximum Number of Accepted InvitationsMedium
ArrayDepth-First SearchGraph Theory
Solve →
117Maximum Number of Fish in a GridMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
118Maximum Number of Moves in a GridMedium
ArrayDynamic ProgrammingMatrix
Solve →
119Maximum Number of Points From Grid QueriesHard
ArrayTwo PointersBreadth-First Search
Solve →
120Maximum Number of Points with CostMedium
ArrayDynamic ProgrammingMatrix
Solve →
121Maximum Points Tourist Can EarnMedium
ArrayDynamic ProgrammingMatrix
Solve →
122Maximum Rows Covered by ColumnsMedium
ArrayBacktrackingBit Manipulation
Solve →
123Maximum Score From Grid OperationsHard
ArrayDynamic ProgrammingMatrix
Solve →
124Maximum Side Length of a Square with Sum Less than or Equal to ThresholdMedium
ArrayBinary SearchMatrix
Solve →
125Maximum Spending After Buying ItemsHard
ArrayGreedySorting
Solve →
126Maximum Students Taking ExamHard
ArrayDynamic ProgrammingBit Manipulation
Solve →
127Maximum Sum of an HourglassMedium
ArrayMatrixPrefix Sum
Solve →
128Maximum Sum With at Most K ElementsMedium
ArrayGreedySorting
Solve →
129Maximum Vacation DaysHard
ArrayDynamic ProgrammingMatrix
Solve →
130Median of a Row Wise Sorted MatrixMedium
ArrayBinary SearchMatrix
Solve →
131MinesweeperMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
132Minimize Maximum Value in a GridHard
ArrayUnion-FindGraph Theory
Solve →
133Minimize the Difference Between Target and Chosen ElementsMedium
ArrayDynamic ProgrammingMatrix
Solve →
134Minimum Cost Path with TeleportationsHard
ArrayDynamic ProgrammingMatrix
Solve →
135Minimum Cost to Connect Two Groups of PointsHard
ArrayDynamic ProgrammingBit Manipulation
Solve →
136Minimum Cost to Make at Least One Valid Path in a GridHard
ArrayBreadth-First SearchGraph Theory
Solve →
137Minimum Falling Path Sum IIHard
ArrayDynamic ProgrammingMatrix
Solve →
138Minimum Falling Path SumMedium
ArrayDynamic ProgrammingMatrix
Solve →
139Minimum Moves to Clean the ClassroomMedium
ArrayHash TableBit Manipulation
Solve →
140Minimum Moves to Move a Box to Their Target LocationHard
ArrayBreadth-First SearchHeap (Priority Queue)
Solve →
141Minimum Moves to Reach Target with RotationsHard
ArrayBreadth-First SearchMatrix
Solve →
142Minimum Moves to Spread Stones Over GridMedium
ArrayDynamic ProgrammingBacktracking
Solve →
143Minimum Number of Days to Disconnect IslandHard
ArrayDepth-First SearchBreadth-First Search
Solve →
144Minimum Number of Flips to Convert Binary Matrix to Zero MatrixHard
ArrayHash TableBit Manipulation
Solve →
145Minimum Number of Flips to Make Binary Grid Palindromic IIMedium
ArrayTwo PointersMatrix
Solve →
146Minimum Number of Operations to Satisfy ConditionsMedium
ArrayDynamic ProgrammingMatrix
Solve →
147Minimum Number of Visited Cells in a GridHard
ArrayDynamic ProgrammingStack
Solve →
148Minimum Obstacle Removal to Reach CornerHard
ArrayBreadth-First SearchGraph Theory
Solve →
149Minimum Operations to Make a Uni-Value GridMedium
ArrayMathSorting
Solve →
150Minimum Operations to Make Columns Strictly IncreasingEasy
ArrayGreedyMatrix
Solve →
151Minimum Operations to Remove Adjacent Ones in MatrixHard
ArrayGraph TheoryMatrix
Solve →
152Minimum Operations to Write the Letter Y on a GridMedium
ArrayHash TableMatrix
Solve →
153Minimum Path Cost in a GridMedium
ArrayDynamic ProgrammingMatrix
Solve →
154Minimum Path Cost in a Hidden GridMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
155Minimum Path SumMedium
ArrayDynamic ProgrammingMatrix
Solve →
156Minimum Time Takes to Reach Destination Without DrowningHard
ArrayBreadth-First SearchMatrix
Solve →
157Minimum Time to Visit a Cell In a GridHard
ArrayBreadth-First SearchGraph Theory
Solve →
158Modify the MatrixEasy
ArrayMatrix
Solve →
159Most Frequent PrimeMedium
ArrayHash TableMath
Solve →
160Nearest Exit from Entrance in MazeMedium
ArrayBreadth-First SearchMatrix
Solve →
161Number of Closed IslandsMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
162Number Of Corner RectanglesMedium
ArrayMathDynamic Programming
Solve →
163Number of Distinct Islands IIHard
ArrayHash TableDepth-First Search
Solve →
164Number of Distinct IslandsMedium
ArrayHash TableDepth-First Search
Solve →
165Number of EnclavesMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
166Number of Increasing Paths in a GridHard
ArrayDynamic ProgrammingDepth-First Search
Solve →
167Number of IslandsMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
168Number of Laser Beams in a BankMedium
ArrayMathString
Solve →
169Number of Paths with Max ScoreHard
ArrayDynamic ProgrammingMatrix
Solve →
170Number of People That Can Be Seen in a GridMedium
ArrayStackMatrix
Solve →
171Number of Spaces Cleaning Robot CleanedMedium
ArrayMatrixSimulation
Solve →
172Number of Submatrices That Sum to TargetHard
ArrayHash TableMatrix
Solve →
173Number of Ways of Cutting a PizzaHard
ArrayDynamic ProgrammingMemoization
Solve →
174Pacific Atlantic Water FlowMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
175Path with Maximum GoldMedium
ArrayBacktrackingMatrix
Solve →
176Path With Maximum Minimum ValueMedium
ArrayBinary SearchDepth-First Search
Solve →
177Path With Minimum EffortMedium
ArrayBinary SearchDepth-First Search
Solve →
178Paths in Matrix Whose Sum Is Divisible by KHard
ArrayDynamic ProgrammingMatrix
Solve →
179Prime In DiagonalEasy
ArrayMathMatrix
Solve →
180Projection Area of 3D ShapesEasy
ArrayMathGeometry
Solve →
181Queens That Can Attack the KingMedium
ArrayMatrixSimulation
Solve →
182Range Sum Query 2D - ImmutableMedium
ArrayDesignMatrix
Solve →
183Range Sum Query 2D - MutableMedium
ArrayDesignBinary Indexed Tree
Solve →
184Rank Transform of a MatrixHard
ArrayUnion-FindGraph Theory
Solve →
185Reconstruct a 2-Row Binary MatrixMedium
ArrayGreedyMatrix
Solve →
186Regions Cut By SlashesMedium
ArrayHash TableDepth-First Search
Solve →
187Remove All Ones With Row and Column Flips IIMedium
ArrayBit ManipulationBreadth-First Search
Solve →
188Remove All Ones With Row and Column FlipsMedium
ArrayMathBit Manipulation
Solve →
189Reshape the MatrixEasy
ArrayMatrixSimulation
Solve →
190Richest Customer WealthEasy
ArrayMatrix
Solve →
191Rotate ImageMedium
ArrayMathMatrix
Solve →
192Rotating the BoxMedium
ArrayTwo PointersMatrix
Solve →
193Rotting OrangesMedium
ArrayBreadth-First SearchMatrix
Solve →
194Row With Maximum OnesEasy
ArrayMatrix
Solve →
195Score After Flipping MatrixMedium
ArrayGreedyBit Manipulation
Solve →
196Search a 2D Matrix IIMedium
ArrayBinary SearchDivide and Conquer
Solve →
197Search a 2D MatrixMedium
ArrayBinary SearchMatrix
Solve →
198Set Matrix ZeroesMedium
ArrayHash TableMatrix
Solve →
199Shift 2D GridEasy
ArrayMatrixSimulation
Solve →
200Shortest BridgeMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
201Shortest Distance from All BuildingsHard
ArrayBreadth-First SearchMatrix
Solve →
202Shortest Path in a Grid with Obstacles EliminationHard
ArrayBreadth-First SearchMatrix
Solve →
203Shortest Path in a Hidden GridMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
204Shortest Path in Binary MatrixMedium
ArrayBreadth-First SearchMatrix
Solve →
205Shortest Path to Get All KeysHard
ArrayBit ManipulationBreadth-First Search
Solve →
206Shortest Path to Get FoodMedium
ArrayBreadth-First SearchMatrix
Solve →
207Sliding PuzzleHard
ArrayDynamic ProgrammingBacktracking
Solve →
208Smallest Rectangle Enclosing Black PixelsHard
ArrayBinary SearchDepth-First Search
Solve →
209Snakes and LaddersMedium
ArrayBreadth-First SearchMatrix
Solve →
210Sort Matrix by DiagonalsMedium
ArraySortingMatrix
Solve →
211Sort the Matrix DiagonallyMedium
ArraySortingMatrix
Solve →
212Sort the Students by Their Kth ScoreMedium
ArraySortingMatrix
Solve →
213Sparse Matrix MultiplicationMedium
ArrayHash TableMatrix
Solve →
214Special Positions in a Binary MatrixEasy
ArrayMatrix
Solve →
215Spiral Matrix IIMedium
ArrayMatrixSimulation
Solve →
216Spiral Matrix IIIMedium
ArrayMatrixSimulation
Solve →
217Spiral Matrix IVMedium
ArrayLinked ListMatrix
Solve →
218Spiral MatrixMedium
ArrayMatrixSimulation
Solve →
219Stamping the GridHard
ArrayGreedyMatrix
Solve →
220Strange Printer IIHard
ArrayGraph TheoryTopological Sort
Solve →
221Subrectangle QueriesMedium
ArrayDesignMatrix
Solve →
222Sudoku SolverHard
ArrayHash TableBacktracking
Solve →
223Sum of Remoteness of All CellsMedium
ArrayHash TableDepth-First Search
Solve →
224Surface Area of 3D ShapesEasy
ArrayMathGeometry
Solve →
225Surrounded RegionsMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
226Swim in Rising WaterHard
ArrayBinary SearchDepth-First Search
Solve →
227The K Weakest Rows in a MatrixEasy
ArrayBinary SearchSorting
Solve →
228The Knight’s TourMedium
ArrayBacktrackingMatrix
Solve →
229The Maze IIMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
230The Maze IIIHard
ArrayStringDepth-First Search
Solve →
231The MazeMedium
ArrayDepth-First SearchBreadth-First Search
Solve →
232Toeplitz MatrixEasy
ArrayMatrix
Solve →
233Transform to ChessboardHard
ArrayMathBit Manipulation
Solve →
234Transpose MatrixEasy
ArrayMatrixSimulation
Solve →
235Trapping Rain Water IIHard
ArrayBreadth-First SearchHeap (Priority Queue)
Solve →
236Twisted Mirror Path CountMedium
ArrayDynamic ProgrammingMatrix
Solve →
237Unique Paths IIMedium
ArrayDynamic ProgrammingMatrix
Solve →
238Unique Paths IIIHard
ArrayBacktrackingBit Manipulation
Solve →
239Valid SudokuMedium
ArrayHash TableMatrix
Solve →
240Valid Tic-Tac-Toe StateMedium
ArrayMatrix
Solve →
241Valid Word SquareEasy
ArrayMatrix
Solve →
242Walls and GatesMedium
ArrayBreadth-First SearchMatrix
Solve →
243Where Will the Ball FallMedium
ArrayMatrixSimulation
Solve →
244Word Search IIHard
ArrayStringBacktracking
Solve →
245Word SearchMedium
ArrayStringBacktracking
Solve →
246Zigzag Grid Traversal With SkipEasy
ArrayMatrixSimulation
Solve →