题目: 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。
说明: 每次只能向下或者向右移动一步。题目链接
我的JavaScript解法
/**
* @param {number[][]} grid
* @return {number}
*/
var minPathSum = function(grid) {
const m = grid.length;
const n = grid[0].length;
let memo = new Array();
for (let i = 0; i < m; i++) {
memo[i] = new Array(n).fill(-1);
}
return dp(grid, m -1, n - 1, memo);
};
const dp = (grid, i, j, memo) => {
if(i == 0 && j == 0)
return grid[0][0];
if(i < 0 || j < 0)
return Number.MAX_VALUE;
if(memo[i][j] != -1)
return memo[i][j];
memo[i][j] = Math.min(dp(grid, i-1, j, memo), dp(grid, i, j-1, memo)) + grid[i][j];
return memo[i][j];
};
解析: 动态规划求最优值
- 时间复杂度:
- 空间复杂度: