一共考虑四种情况:上和左都是边界,即起点;上是边界;左是边界;上左都不是边界
class Solution {
public:
int minPathSum(vector<vector<int>>& grid){
if(grid.size() == 0){
return 0;
}
int m = grid.size();
int n = grid[0].size();
for(int i = 0; i < m; ++i){
for(int j = 0; j < n; ++j){
if(i == 0 && j == 0){
continue;
}
else if(i == 0){
grid[i][j] = grid[i][j] + grid[i][j-1];
}
else if(j == 0){
grid[i][j] = grid[i][j] + grid[i-1][j];
}
else{
grid[i][j] = min(grid[i-1][j], grid[i][j-1]) + grid[i][j];
}
}
}
return grid[m-1][n-1];
}
};