给定非负数的m x n数组,从左上到右下计算最短路径。 每次只能向下或者向右走。
解决方案
动态规划:到(i,j)的最短路径,是(i,j)的值加上到(i-1,j)与(i,j-1)中的最小值。 代码如下:
int minimumPathSum(int[][] grid){
int Height = grid.length;
int Width = grid[0].length;
int[][] sum = new int[Height][Width];
int MAX = Integer.MAX_VALUE;
for(int i=0; i<Height; i++){
for(int j=0; j<Width; j++){
if(i==0 && j==0){
sum[i][j] = grid[i][j];
}else{
sum[i][j] = Math.min(i<=0? MAX:sum[i-1][j],
j<=0? MAX:sum[i][j-1]);
}
}
}
return sum[Height-1][Width-1];
}