思路:
做过上两道题的同学肯定就觉得这题比前面的简单很多, 先更新第一排第一列, 就叠加就好, 然后再更新剩下的格子, 叠加的时候要选左边和上边较小的一个数字加进去就好. 思路很简单.
int minPathSum(vector<vector<int>>& grid) {
int m = grid.size(), n = grid[0].size();
if (! m || ! n) return 0;
for (int i = 1; i < m; i++)
grid[i][0] += grid[i - 1][0];
for (int j = 1; j < m; 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];
}