JS算法-打家劫舍

简介: JS算法-打家劫舍

题目


给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。

输入:[1,2,3,1]
输出:4
解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。
     偷窃到的最高金额 = 1 + 3 = 4 。


题解


首先,我们先使用len常量记录下当前nums参数的长度,然后再判断当前len常量的值是否,0,为0则直接返回0,如果为1则直接将当前nums参数的第一个参数返回出去,因为len常量为1则代表nums参数里面只有一个参数,在不触发警报的情况下能够偷到最多的钱数。我们为了解决这个问题,这里我们可以采用动态规划的方式。我们先定义两个变量 preMax 和 curMax,分别表示偷到当前为止的前一家和当前家的最大钱数,截下来我们定义一个变量 res,表示最终偷到的最大钱数,我们将 curMax 和 res 初始值都设置为 nums[0] 和 nums[1] 中的较大值,接下来,我们使用循环遍历 nums 数组,从第 2 家开始计算最大钱数。在每一次循环中,我们首先将 curMax 的值保存在一个临时变量 temp 中,然后更新 curMax 和 preMax 的值。其中,curMax 的更新规则是:如果当前家被偷,则钱数为 nums[i] + preMax;否则,钱数为 curMax。preMax 的更新规则是将 temp 赋值给 preMax。最后,我们将 res 更新为 curMax 和 res 中的较大值,循环结束后,我们返回 res 的值,即为最终偷到的最大钱数

var rob = function(nums) {
  const len = nums.length
  if (len === 0) return 0
  if (len === 1) return nums[0]
  let preMax = nums[0]
  let curMax = Math.max(nums[0], nums[1])
  let res = curMax
  for (let i = 2; i < nums.length; i++) {
    let temp = curMax
    curMax = Math.max(nums[i] + preMax, curMax)
    preMax = temp
    res = Math.max(res, curMax)
  }
  return res
}
相关文章
|
3月前
|
算法 JavaScript 前端开发
第一个算法项目 | JS实现并查集迷宫算法Demo学习
本文是关于使用JavaScript实现并查集迷宫算法的中国象棋demo的学习记录,包括项目运行方法、知识点梳理、代码赏析以及相关CSS样式表文件的介绍。
第一个算法项目 | JS实现并查集迷宫算法Demo学习
|
4月前
|
JavaScript 算法 前端开发
JS算法必备之String常用操作方法
这篇文章详细介绍了JavaScript中字符串的基本操作,包括创建字符串、访问特定字符、字符串的拼接、位置查找、大小写转换、模式匹配、以及字符串的迭代和格式化等方法。
JS算法必备之String常用操作方法
|
4月前
|
JavaScript 算法 前端开发
JS算法必备之Array常用操作方法
这篇文章详细介绍了JavaScript中数组的创建、检测、转换、排序、操作方法以及迭代方法等,提供了数组操作的全面指南。
JS算法必备之Array常用操作方法
|
4月前
|
算法 JavaScript 前端开发
国标非对称加密:RSA算法、非对称特征、js还原、jsencrypt和rsa模块解析
国标非对称加密:RSA算法、非对称特征、js还原、jsencrypt和rsa模块解析
335 1
|
4月前
|
JavaScript 算法 前端开发
"揭秘Vue.js的高效渲染秘诀:深度解析Diff算法如何让前端开发快人一步"
【8月更文挑战第20天】Vue.js是一款备受欢迎的前端框架,以其声明式的响应式数据绑定和组件化开发著称。在Vue中,Diff算法是核心之一,它高效计算虚拟DOM更新时所需的最小实际DOM变更,确保界面快速准确更新。算法通过比较新旧虚拟DOM树的同层级节点,递归检查子节点,并利用`key`属性优化列表更新。虽然存在局限性,如难以处理跨层级节点移动,但Diff算法仍是Vue高效更新机制的关键,帮助开发者构建高性能Web应用。
80 1
|
4月前
|
算法 JavaScript 前端开发
对称加密算法解析:DES、AES及其在`pycryptodome` 和 `crypto-js` 模块中的应用
对称加密算法解析:DES、AES及其在`pycryptodome` 和 `crypto-js` 模块中的应用
203 1
|
4月前
|
JavaScript 算法 前端开发
国标哈希算法基础:SHA1、SHA256、SHA512、MD5 和 HMAC,Python和JS实现、加盐、算法魔改
国标哈希算法基础:SHA1、SHA256、SHA512、MD5 和 HMAC,Python和JS实现、加盐、算法魔改
633 1
|
4月前
|
存储 算法 Java
LeetCode经典算法题:打家劫舍java详解
LeetCode经典算法题:打家劫舍java详解
76 2
|
5月前
|
算法 JavaScript
JS 【详解】树的遍历(含深度优先遍历和广度优先遍历的算法实现)
JS 【详解】树的遍历(含深度优先遍历和广度优先遍历的算法实现)
80 0
JS 【详解】树的遍历(含深度优先遍历和广度优先遍历的算法实现)
|
18天前
|
算法
基于WOA算法的SVDD参数寻优matlab仿真
该程序利用鲸鱼优化算法(WOA)对支持向量数据描述(SVDD)模型的参数进行优化,以提高数据分类的准确性。通过MATLAB2022A实现,展示了不同信噪比(SNR)下模型的分类误差。WOA通过模拟鲸鱼捕食行为,动态调整SVDD参数,如惩罚因子C和核函数参数γ,以寻找最优参数组合,增强模型的鲁棒性和泛化能力。