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.
简单的DP,为了方便,就直接操作参数了
class Solution {
public:
int minPathSum(vector<vector<int> > &grid) {
for(int i=1;i<grid[0].size();++i) grid[0][i] += grid[0][i-1];
for(int i=1;i<grid.size();++i){
for(int j=0;j<grid[i].size();++j){
if(j==0){
grid[i][j] += grid[i-1][j];
}else{
grid[i][j] += min(grid[i-1][j],grid[i][j-1]);
}
}
}
return *(grid.rbegin()->rbegin());
}
};