class Solution { public: int minPathSum(vector<>>& grid) { if(0 == grid.size()) return 0; int m = grid.size(), n = grid[0].size(); for(int i = 0; i < m-1; ++i) grid[i+1][0] += grid[i][0]; for(int j = 0; j < n-1; ++j) grid[0][j+1] += grid[0][j]; 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]; } };