给定m乘n网格填充非负数,找到从左上到右下的路径,最小化沿其路径的所有数字总和,只能在任何时间点向下或向右移动
动态规划实现
- Runtime: 72 ms, faster than 96.42%
- Memory Usage: 37.4 MB, less than 68.59%
首先确定第一行和第一列,后面逐行逐列得到。
/**
* @param {number[][]} grid
* @return {number}
*/
var minPathSum = function(grid) {
let m = grid.length
let n = grid[0].length
for(let i = 1; i < m; i++) {
grid[i][0] += grid[i - 1][0]
}
for (let i = 1; i < n; i++) {
grid[0][i] += grid[0][i - 1]
}
for(let i = 1; i < m; i++) {
for(let j = 1; j < n; j++) {
grid[i][j] += Math.min(grid[i - 1][j], grid[i][j - 1])
}
}
return grid[m - 1][n - 1]
};