题目
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) {
int m = grid.size();
if(m==0) return 0;
int n = grid[0].size();
if(n==0) return 0;
for(int i=0;i<m;i++) {
for(int j=0;j<n;j++) {
if(i==0&&j==0) {continue;}
int top = i-1>=0?grid[i-1][j]:INT_MAX;
int left = j-1>=0?grid[i][j-1]:INT_MAX;
grid[i][j] += min(top,left);
}
}
return grid[m-1][n-1];
}
};