剑指Offer——礼物的最大价值(JS实现)

简介: 剑指Offer——礼物的最大价值(JS实现)

题目描述

image.png

解题思路

  • 本题考查动态规划
  • 首先构造一个和原数组维度一摸一样的全零数组dp
  • dp的值首先将第一行和第一列构造为原数组向右、向下的价值和
  • 然后使用for循环遍历填写剩余的dp值
  • 方程dp[i][j]=grid[i][j] + Math.max(dp[i][j-1],dp[i-1][j])

实现代码

var maxValue = function(grid) {
    // 首先构造一个和grid矩阵维度一致的矩阵
    const dp = [];
    const rowNum = grid.length;
    const cowNum = grid[0].length;
    for (let i = 0; i < rowNum;i++) {
        dp[i] = [];
        for (let j = 0;j < cowNum;j++) {
            dp[i][j] = 0;
        }
    }
    // 函数走到这里dp已经变成和grid维度完全一致的全零数组
    // 我们首先要做的是将dp的第一行和第一列全部填写为从初始位置出发走到目标位置所需的距离
    dp[0][0] = grid[0][0];
    for (let i = 1; i < rowNum;i++) {
        dp[i][0] = grid[i][0] + dp[i-1][0];
    }
    for (let j = 1; j < cowNum;j++) {
        dp[0][j] = grid[0][j] + dp[0][j-1]
    }
    // 通过上面两个循环我们已经将grid的第一行和第一列需要的价值和写到了dp数组中的第一列和第二列
    // 接下来遍历grid的其余数组即可
    for (let i = 1; i < rowNum;i++) {
        for (let j = 1;j < cowNum;j++) {
            dp[i][j] = grid[i][j] + Math.max(dp[i-1][j],dp[i][j-1]);
        }
    }
    // 走到这里dp数组的每一个值我们应该理解为grid数组路径的价值和
    // dp数组的最后一个值就应该是价值的最大值
    return dp[rowNum-1][cowNum-1]
};
```
作者:Always_positive
链接:https://juejin.cn/post/6948663870261035039
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关文章
|
4月前
|
JavaScript 前端开发
JavaScript题解剑指offer : 09. 用两个栈实现队列
JavaScript题解剑指offer : 09. 用两个栈实现队列
23 0
|
存储 JavaScript 前端开发
《剑指 Offer(第 2 版)》队列部分 JavaScript 题解
《剑指 Offer(第 2 版)》队列部分 JavaScript 题解
|
JavaScript 前端开发 程序员
《剑指 Offer(第 2 版)》树部分JavaScript题解
《剑指 Offer(第 2 版)》树部分JavaScript题解
《剑指 Offer(第 2 版)》树部分JavaScript题解
|
存储 JavaScript 前端开发
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解
|
JavaScript 前端开发
利用JavaScript实现二级联动
利用JavaScript实现二级联动 要实现JavaScript二级联动效果,首先要确定需要哪些技术: 二维数组 for in循环 new Option(text,value,true,true) add(option,null) onchange() 表单事件 HTML代码: &lt;!-- &lt;input type=&quot;text&quot; id=&quot;text&quot;&gt; --&gt; 请选择省份: &lt;select name=&quot;&quot; id=&quot;provinces&quot;&gt; &lt;!-- &lt;option value=&quot;江苏省&quot;&gt;江苏省&lt;/option&gt;
|
JavaScript 前端开发
JavaScript函数柯里化的实现原理,进来教你完成一个自己的自动实现柯里化方法
JavaScript函数柯里化的实现原理,进来教你完成一个自己的自动实现柯里化方法
167 0
|
移动开发 JavaScript weex
weex-自定义module,实现weex在iOS的本地化,js之间互相跳转,交互,传值(iOS接入weex的最佳方式)
weex-自定义module,实现weex在iOS的本地化,js之间互相跳转,交互,传值(iOS接入weex的最佳方式)
219 0
|
JavaScript
JS中实现或退出全屏
JS中实现或退出全屏
153 0
|
前端开发 JavaScript
前端:JS实现双击table单元格变为可编辑状态
前端:JS实现双击table单元格变为可编辑状态
365 0