Matrix DP - 64. Minimum Path Sum

https://leetcode.com/problems/minimum-path-sum/description/

这个题目写了三遍,才写出正确的Solution。前两个错误,都是因为初始化错误。

class Solution {
    public int minPathSum(int[][] grid) {
        int rowNum = grid.length;
        int colNum = grid[0].length;
        int[][] dp = new int[rowNum][colNum];
        
        // initialization
        dp[0][0] = grid[0][0];
        for (int i = 1; i < rowNum; i++) {
            dp[i][0] = grid[i][0] + dp[i - 1][0];
        }
        for (int j = 1; j < colNum; j++) {
            dp[0][j] = grid[0][j] + dp[0][j - 1];
        }
        
        for (int i = 1; i < rowNum; i++) {
            for (int j = 1; j < colNum; j++) {
                dp[i][j] = Math.min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j];
            }
        }
        
        return dp[rowNum - 1][colNum - 1];
    }
    
    public int minPathSumWrong2(int[][] grid) {
        int rowNum = grid.length;
        int colNum = grid[0].length;
        int[][] dp = new int[rowNum][colNum];
        
        for (int i = 0; i < rowNum; i++) {
            dp[i][0] = grid[i][0];  // wrong!!!
        }
        for (int j = 0; j < colNum; j++) {
            dp[0][j] = grid[0][j];  // wrong!!!
        }
        ...
    }
    
    public int minPathSumWrong(int[][] grid) {
        int rowNum = grid.length;
        int colNum = grid[0].length;
        int[][] dp = new int[rowNum + 1][colNum + 1];

        // wrong: 试图将 dp 首行首列初始化为 0,实际上是不对的

        for (int i = 0; i < rowNum; i++) {
            for (int j = 0; j < colNum; j++) {
                dp[i + 1][j + 1] = Math.min(dp[i][j + 1], dp[i + 1][j]) + grid[i][j];
            }
        }
        /**
        Your input:
                [1,3,1],
                [1,5,1],
                [4,2,1]        
        Your stdout
          0, 0, 0, 0, 
          0, 1, 3, 1, 
          0, 1, 6, 2, 
          0, 4, 6, 3, 
        */
        return dp[rowNum][colNum];
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,354评论 0 33
  • 来自这个兄弟:http://blog.csdn.net/ddd_1206/article/category/685...
    580aa87075d3阅读 4,824评论 0 18
  • 记得上次出现这个弹窗的时候,朋友告诉我是Office的问题,后来卸载Office果然治好了水土不服。 解决方案 方...
    xdqkid阅读 8,660评论 0 0
  • 我走过长路飘渺的黑夜,渡过七月流火的时节,穿过荒芜人烟的旷野,拂过薄雾晨曦的天地,罔顾星月相携的眷恋,却唯独,驻足...
    听雨七阅读 2,656评论 0 0
  • 阳光暖暖的,乡间的微风轻轻吹着,大伟站在赵庄村口的那片树林边,他止住了脚步。 一种说不清的感觉涌上了心头,静静的赵...
    风雨菩提阅读 3,056评论 0 2

友情链接更多精彩内容