LeetCode 64 — Minimum Path Sum (C++ DP + Memoization)

Classic Dynamic Programming grid problem. We must move from top-left to bottom-right minimizing total cost.

Problem Statement

Given an m × n grid filled with non-negative numbers, find a path which minimizes the sum. Moves allowed → Right or Down only.

Handwritten Notes

Minimum Path Sum dynamic programming handwritten notes

Intuition

C++ Code (Memoization)


class Solution {
public:
    int solve(vector>& grid, int i, int j,
              vector>& dp) {

        if (i < 0 || j < 0) return 1e9;
        if (i == 0 && j == 0) return grid[0][0];

        if (dp[i][j] != -1) return dp[i][j];

        int top  = grid[i][j] + solve(grid, i-1, j, dp);
        int left = grid[i][j] + solve(grid, i, j-1, dp);

        return dp[i][j] = min(top, left);
    }

    int minPathSum(vector>& grid) {
        int m = grid.size(), n = grid[0].size();
        vector> dp(m, vector(n, -1));
        return solve(grid, m-1, n-1, dp);
    }
};
×