64. Minimum Path Sum

Hint
class Solution { public: int minPathSum(vector<vector<int>>& grid) { // Update the first column by accumulating values from top to bottom // Update the first row by accumulating values from left to right // Update the rest of the grid by choosing the minimum path sum at each cell for () { for () { // Add the minimum value from the cell above or to the left } } // The bottom-right cell contains the minimum path sum } };
class Solution { public: 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]; } };
  • T:
    O(MN)
  • S:
    O(1)