LeetCode -- Minimum Path Sum最小路径和

158 阅读1分钟

给定非负数的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];
}