public class Solution {
/**
* @param grid: a list of lists of integers.
* @return: An integer, minimizes the sum of all numbers along its path
*/
public int minPathSum(int[][] grid) {
// write your code here
if(null==grid||0==grid.length){
return 0;
}
int m = grid.length;
int n = grid[0].length;
int[][] minArr = new int[m][n];
minArr[0][0] = grid[0][0];
for(int i=1;i<n;i++){
minArr[0][i] = minArr[0][i-1] + grid[0][i];
}
for(int i=1;i<m;i++){
minArr[i][0] = minArr[i-1][0] + grid[i][0];
}
for(int i=1;i<m;i++){
for(int j=1;j<n;j++){
if(minArr[i][j-1]<minArr[i-1][j]){
minArr[i][j] = minArr[i][j-1] + grid[i][j];
}else{
minArr[i][j] = minArr[i-1][j] + grid[i][j];
}
}
}
return minArr[m-1][n-1];
}
}