leecode/todo/candidates/64.minimum-path-sum.js
2020-05-22 18:17:19 +08:00

43 lines
976 B
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* @lc app=leetcode id=64 lang=javascript
*
* [64] Minimum Path Sum
*/
/**
* @param {number[][]} grid
* @return {number}
*/
var minPathSum = function(grid) {
// 时间复杂度和空间复杂度都是 O (m * n);
if (grid.length === 0) return 0;
const dp = [];
const rows = grid.length;
const cols = grid[0].length;
// 实际上你也可以无差别全部填充为MAX_VALUE对结果没影响,代码还会更少
// 只是有点不专业而已
for (let i = 0; i < rows + 1; i++) {
dp[i] = [];
// 初始化第一列
dp[i][0] = Number.MAX_VALUE;
for (let j = 0; j < cols + 1; j++) {
// 初始化第一行
if (i === 0) {
dp[i][j] = Number.MAX_VALUE;
}
}
}
// tricky
dp[0][1] = 0;
for (let i = 1; i < rows + 1; i++) {
for (let j = 1; j < cols + 1; j++) {
// state transition
dp[i][j] = Math.min(dp[i - 1][j], dp[i][j - 1]) + grid[i - 1][j - 1];
}
}
return dp[rows][cols];
};