64. 最小路径和

原题链接:https://leetcode-cn.com/problems/minimum-path-sum/

class Solution {
    // 动态规划的问题
    // dp[i][j] 值表示 i,j 位置到 最右下角的最小数字和
     public int minPathSum(int[][] grid) {
        // 基础参数判断
        if (grid == null || grid.length == 0 || grid[0].length == 0){
            return 0;
        }
        // 初始化
        int rows = grid.length;
        int colums = grid[0].length;
        int[][] dp = new int[rows][colums]; 
        dp[0][0] = grid[0][0];
        // 初始化第一列
        for (int i = 1; i < rows; i++){
           dp[i][0] = grid[i][0] + dp[i-1][0];
        }
        // 初始化第一行
        for (int j = 1; j < colums; j++){
           dp[0][j] = grid[0][j] + dp[0][j-1];
        }

        for (int i = 1; i < rows; i++){
            for (int j = 1; j < colums; j++){
                // 当前的和【状态转移方程】
                dp[i][j] = grid[i][j] + Math.min(dp[i-1][j], dp[i][j-1]);
            }
        }
        return dp[rows -1][colums-1];
    }
}

  

原文地址:https://www.cnblogs.com/junbaba/p/14192858.html