LeetCode 64. 最小路径和

今天的打卡题目, 一个简单的动态规划.
先上AC代码


class Solution {
    public int minPathSum(int[][] grid) {
            for (int i=0; i0) grid[0][j] = grid[0][j-1] +  grid[0][j];
                    else if(j==0 && i>0) grid[i][0] = grid[i-1][0] + grid[i][0];
                    else{
                        if(i==0 && j==0) continue;
                        grid[i][j] = Math.min(grid[i-1][j] ,grid[i][j-1]) + grid[i][j];
                    }
                }
            }

            return grid[grid.length-1][grid[0].length-1];
    }
}

题解

如果要想以最小路径到达红色色块, 就必须经过蓝色和黄色 ,然后只需要在 上方和左面取较小的一方即可,

关键代码

grid[i][j] = Math.min(grid[i-1][j] ,grid[i][j-1]) + grid[i][j]

然后考虑到边界情况,即可.
此题可以作为dp(动态规划)的入门题目, 简单易懂, 而且是朴素的dp思想

你可能感兴趣的:(LeetCode 64. 最小路径和)