2023.10.11
本题与不同路径 思路类似,设定二维dp数组,dp[i][j]的含义为:从起点到坐标(i,j)的最小路径和。然后就是常规的动态规划做法了,直接看代码:
class Solution {
public int minPathSum(int[][] grid) {
int row = grid.length;
int col = grid[0].length;
int[][] dp = new int[row][col];
//初始化dp数组
dp[0][0] = grid[0][0];
for(int i=1; i<col; i++){
dp[0][i] = grid[0][i] + dp[0][i-1];
}
for(int i=1; i<row; i++){
dp[i][0] = grid[i][0] + dp[i-1][0];
}
//遍历赋值dp数组
for(int i=1; i<row; i++){
for(int j=1; j<col; j++){
dp[i][j] = Math.min(dp[i-1][j],dp[i][j-1]) + grid[i][j];
}
}
return dp[row-1][col-1];
}
}