今天的打卡题目, 一个简单的动态规划.
先上AC代码
class Solution {
public int minPathSum(int[][] grid) {
for (int i=0; i<grid.length; i++) {
for (int j=0; j<grid[0].length; j++) {
if(i == 0 && j>0) 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思想