题解 | 矩阵的最小路径和

矩阵的最小路径和

https://www.nowcoder.com/practice/7d21b6be4c6b429bb92d219341c4f8bb

import java.util.*;


public class Solution {

    /**
      * 矩阵的最小路径和
      * 动态规划,问题拆解:
      * 1.确定状态:dp[i][j]表示到达(i,j)的最小路径和,  状态转移方程:dp[i][j] = Math.min(dp[i-1][j],dp[i][j-1]) + matrix[i][j]
      * 2.初始化:
      * if i ==0 && j ==0 dp[0][0] = matrix[0][0];
      * if i == 0 dp[i][j] = dp[i-1][j] + matrix[i][j] ;
      * if j == 0 dp[i][j] = dp[i][j-1] + matrix[i][j] ;
      */
    public int minPathSum(int[][] matrix) {
        if (null == matrix || matrix.length == 0 || matrix[0].length == 0) {
            return 0;
        }
        int[][] dp = new int[matrix.length][matrix[0].length];
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[0].length; j++) {
                if (i == 0 && j == 0) {
                    dp[i][j] = matrix[i][j];
                    continue;
                }
                if (i == 0) {
                    dp[i][j] = dp[i][j - 1] + matrix[i][j];
                    continue;
                }
                if (j == 0) {
                    dp[i][j] = dp[i - 1][j] + matrix[i][j];
                    continue;
                }
                dp[i][j] = Math.min(dp[i - 1][j], dp[i][j - 1]) + matrix[i][j];
            }
        }
        return dp[matrix.length - 1][matrix[0].length - 1];
    }
}

全部评论

相关推荐

牛客501015981号:前面志愿结束了,在大池子里面被其他部门捞了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务