LeetCode Minimum Path Sum

来源:互联网 发布:java电信资费系统 编辑:程序博客网 时间:2024/06/13 13:29

原题链接在这里:https://leetcode.com/problems/minimum-path-sum/

是DP题,与Unique Paths 和 Unique Paths II相似。存储历史信息是走到走到历史点的最小权重路径,更新当前点用上面点和左面点中的小值加上grid中当前点的值。

Unique Paths 和 Unique Paths II  都有相同的第二种降维方法。

AC Java:

public class Solution {    public int minPathSum(int[][] grid) {        /*        //Method 1        if(grid == null || grid.length == 0 || grid[0].length == 0){            return Integer.MAX_VALUE;        }        int row = grid.length;        int column = grid[0].length;        int [][] res = new int[row][column];        res[0][0] = grid[0][0];        for(int i = 1; i < row; i++){            res[i][0] = res[i-1][0] + grid[i][0];         }        for(int j = 1; j < column; j++){            res[0][j] = res[0][j-1] + grid[0][j];        }        for(int i = 1; i<row; i++){            for(int j = 1; j< column; j++){                res[i][j] = Math.min(res[i-1][j], res[i][j-1])+grid[i][j];            }        }        return res[row-1][column-1];        */                //Method 2        if(grid == null || grid.length == 0 || grid[0].length == 0){            return Integer.MAX_VALUE;        }        int row = grid.length;        int column = grid[0].length;        int [] res = new int[column];        res[0] = grid[0][0];        for(int j = 1; j< column; j++){            res[j] = res[j-1] + grid[0][j];        }        for(int i = 1; i < row; i++){            for(int j = 0; j< column; j++){                if(j == 0){                    res[j] += grid[i][j];                }else{                    res[j] = Math.min(res[j-1], res[j]) + grid[i][j];                }            }        }        return res[column-1];    }}


0 0
原创粉丝点击