题意
原题
给个 square 二维数组。
从左上角爬到右下角。只能向右或者向下爬。求所经路径最小和
思路
参考 该博文
利用如下公式:
代码
/**
* @param {number[][]} grid
* @return {number}
*/
var minPathSum = function(grid) {
let height = grid.length;
if(!height){
return 0;
}
let width = grid[0].length;
if(!width){
return 0;
}
for(let i = 1; i < height; ++i){
grid[i][0] += grid[i - 1][0];
}
for(let j = 1; j < width; ++j){
grid[0][j] += grid[0][j - 1];
}
for(let i = 1; i < height; ++i){
for(let j = 1; j < width; ++j){
// 下面这行很神奇 把加法 min 函数里面,反而会变快
grid[i][j] = Math.min(grid[i - 1][j] + grid[i][j], grid[i][j - 1] + grid[i][j]);
}
}
return grid[height - 1][width - 1];
};
探索
把 加法运算放 Math.min 函数里面 反而比 放外面 更快。很神奇,没想通。