Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.
Note: You can only move either down or right at any point in time.
class Solution {
public:
int minPathSum(vector<vector<int> > &grid) {
for(size_t i=0;i<grid.size();++i){
for(size_t j=0;j<grid[i].size();++j){
if(0==i && 0==j) continue;
if(i>0 && j>0) grid[i][j]+=min(grid[i-1][j],grid[i][j-1]);
else if(i>0) grid[i][j] += grid[i-1][j];//最上边
else grid[i][j] += grid[i][j-1];//最左边
}
}
return grid.size()==0 ? 0:grid[grid.size()-1][grid[grid.size()-1].size()-1];
}
};