leetcode题目64. 最小路径和
2022-03-02 本文已影响0人
castlet
题目描述
链接:https://leetcode-cn.com/problems/minimum-path-sum/
给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。
说明:每次只能向下或者向右移动一步。
示例
输入:grid = [[1,3,1],[1,5,1],[4,2,1]]
输出:7
解释:因为路径 1→3→1→1→1 的总和最小。
代码
public int minPathSum(int[][] grid) {
// f(m, n) = grid[m - 1][n - 1] + min(f(m - 1, n) , f(m, n-1))
if (grid == null || grid.length <= 0) {
return 0;
}
int rowCount = grid.length;
int columnCount = grid[0].length;
int[] result = new int[columnCount];
for (int row = 0; row < rowCount ; row ++) {
for (int column = 0; column < columnCount; column ++) {
if (row == 0 && column == 0) {
result[column] = grid[row][column];
continue;
}
if (column == 0) {
result[column] = grid[row][column] + result[column];
continue;
}
if (row == 0) {
result[column] = grid[row][column] + result[column - 1];
continue;
}
result[column] = grid[row][column] + Math.min(result[column], result[column - 1]);
}
}
return result[columnCount - 1];
}