LeetCode 64 最小路径和
LeetCode64 最小路径和
题目描述
给定一个包含非负整数的 *m* x *n* 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。
说明:每次只能向下或者向右移动一步。
样例
输入:grid = [[1,3,1],[1,5,1],[4,2,1]]
输出:7
解释:因为路径 1→3→1→1→1 的总和最小。
输入:grid = [[1,2,3],[4,5,6]]
输出:12
算法分析
- f[i][j] 表示从起点到 i,j的最小路径和
时间复杂度
\(O(nm)\)
Java代码
class Solution {
public int minPathSum(int[][] grid) {
int n = grid.length;
int m = grid[0].length;
int[][] f = new int[n+10][m+10];
for(int i = 0; i < n; i ++){
for(int j = 0; j < m; j++){
f[i][j] = 0x3f3f3f;
}
}
f[0][0] = grid[0][0];
for(int i = 0; i < n; i ++){
for(int j = 0; j < m; j++){
if(i - 1 >= 0) f[i][j] = Math.min(f[i-1][j]+grid[i][j],f[i][j]);
if(j - 1 >= 0) f[i][j] = Math.min(f[i][j-1]+grid[i][j],f[i][j]);
}
}
return f[n-1][m-1];
}
}

浙公网安备 33010602011771号