剑指 Offer 47. 礼物的最大价值
程序员文章站
2022-03-23 09:20:42
剑指 Offer 47. 礼物的最大价值在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?解题思路:1. 从第一个点到最后一个点依次计算每个格子 的最大值;2. 每个格子的最大值 为 上面一个点或者下面一个点的最大值与当前点的和;3. 注意边界条件: 第一行和第一列;/** * @p....
在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?
解题思路:
1. 从第一个点到最后一个点依次计算每个格子 的最大值;
2. 每个格子的最大值 为 上面一个点或者下面一个点的最大值与当前点的和;
3. 注意边界条件: 第一行和第一列;
/**
* @param {number[][]} grid
* @return {number}
*/
var maxValue = function(grid) {
let colength = grid[0].length;
let rowLength = grid.length;
const getMaxNeighbors = (row, col) => {
if(row === 0 && col ===0) return 0;
if(row === 0) return grid[row][col-1];
if(col === 0) return grid [row-1][col];
return Math.max(grid[row][col-1], grid[row-1][col]);
}
for(let row=0; row< rowLength; row++){
for(let col = 0;col<colength;col++){
grid[row][col] = grid[row][col] + getMaxNeighbors(row,col);
}
}
return grid[rowLength-1][colength-1]
};
本文地址:https://blog.csdn.net/hupian1989/article/details/107894086
上一篇: 牛客_数组中的逆序对