064J. Minimum Path Sum
https://leetcode.com/problems/minimum-path-sum/
Method DP;
道理同前两题 还行。
class Solution {
public int minPathSum(int[][] grid) {
int m = grid.length;
int n = grid[0].length;
for(int i = 1; i < m; i++){
grid[i][0] += grid[i-1][0];
}
for(int i = 1; i < n; i++){
grid[0][i] += grid[0][i-1];
}
for(int i = 1; i < m; i++){
for(int j = 1; j < n; j++){
grid[i][j] += Math.min(grid[i][j-1], grid[i-1][j]);
}
}
return grid[m-1][n-1];
}
}
class Solution {
public int minPathSum(int[][] grid) {
int m = grid.length;
if (grid.length < 1) return 0;
int n = grid[0].length;
int[][] dp = new int[m + 1][n + 1];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (i == 0 && j == 0) {
dp[i + 1][j + 1] = grid[i][j];
} else if (i == 0) {
dp[i + 1][j + 1] = dp[i + 1][j] + grid[i][j];
} else if (j == 0) {
dp[i + 1][j + 1] = dp[i][j + 1] + grid[i][j];
} else {
dp[i + 1][j + 1] = Math.min(dp[i][j + 1], dp[i + 1][j]) + grid[i][j];
}
}
}
return dp[m][n];
}
}
Last updated
Was this helpful?