leetcode 64最小路徑和(java medium 動態規劃)

由於前面已經做過了不少動態規劃了,所以這個題很快能夠找出狀態轉移方程

dp[i][j]=Min{dp[i-1][j],dp[i][j-1]}+arrays[i][j] 

class Solution {
    public int minPathSum(int[][] grid) {
        if(grid.length==0)
             return 0;
        //二維數組不一定是正方形
        int row=grid.length;
        int column=grid[0].length;
        int[][] dp = new int[row][column];
        dp[0][0]=grid[0][0];
        //從上到下從下到上都不能忽略邊界值問題
        for(int j=1;j<column;j++){
            //第一行計算dp值
            dp[0][j]=dp[0][j-1]+grid[0][j];
        }
        for(int i=1;i<row;i++){
            dp[i][0]=dp[i-1][0]+grid[i][0];
            for(int j=1;j<column;j++){
                dp[i][j]=Math.min(dp[i-1][j],dp[i][j-1])+grid[i][j];
            }
        }
        return dp[row-1][column-1];
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章