DP / Transition TypeGrid DPMedium

Grid DP — Minimum Path Sum

Find the path from top-left to bottom-right with minimum sum. dp[i][j] = grid[i][j] + min(dp[i-1][j], dp[i][j-1]).

LC
Practice on LeetCode 64: Minimum Path Sum
Open Problem

Grid DP Pattern

Traverse a 2D grid where each cell has a cost. Each cell's optimal value = its own cost + min of the cell above or left. First row and column only have one path (cumulative sum).

Recurrence

dp[0][0] = grid[0][0]
dp[i][0] = dp[i-1][0] + grid[i][0]
dp[0][j] = dp[0][j-1] + grid[0][j]
dp[i][j] = grid[i][j] + min(dp[i-1][j], dp[i][j-1])
Interactive Visualization
Computing
Source (min of)
Computed
Answer / Path
Step 0 of 0
Cell
—
Cost
—
dp Value
—
Min Path Sum
—
Ready. Press Play or Next to start.
✓ Done
Speed
C++ — Minimum Path Sum
int minPathSum(vector<vector<int>>& grid) {
    int m = grid.size(), n = grid[0].size();
    for (int i = 1; i < m; i++) grid[i][0] += grid[i-1][0];
    for (int j = 1; j < n; j++) grid[0][j] += grid[0][j-1];
    for (int i = 1; i < m; i++)
        for (int j = 1; j < n; j++)
            grid[i][j] += min(grid[i-1][j], grid[i][j-1]);
    return grid[m-1][n-1];
}
Complexity
Time
O(M × N)

Visit each cell once.

Space
O(1)

Modify grid in-place.


📝 Notes

▼