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