news 2026/2/6 9:05:47

【 每天学习一点算法 2026/01/04】打家劫舍

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【 每天学习一点算法 2026/01/04】打家劫舍

每天学习一点算法 2026/01/04

题目:打家劫舍

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。

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

新年新开始,坚持学习算法。

又是一道动态规划的问题,我们来分析一下,我们入按照数组顺序的挨个计算在每个房间的能偷窃到的最高金额会有哪些情况呢?很明显,每个房间就只存在两种情况(偷/不偷),那我们来逐个房间分析,并将每个偷与不偷能窃到的最大金额用一个二维数组存储起来。

  • 第一个房间:两种可能0或者nums[0]arr[0] = [0, nums[0]]

  • 第二个房间:两种可能

    1. 如果这个房间不偷那就是截至上一个房间偷到的最高金额(因为这是第二房间所以一定是nums[0]
    2. 如果这个房间偷,那肯定是上一个房间未偷盗情况下的金额 + 这个房间的金额

    arr[1] = [nums[0], arr[0][0] + nums[1]]

  • 第 n 个房间:根据第二房间的分析我们可以知道,如果这个房间为偷取,我们应该拿到上一个能够偷窃到的最高金额(Math.max(arr[n - 1][0], arr[n - 1][1])),所以arr[n] = [Math.max(arr[n - 1][0], arr[n - 1][1]), arr[n - 1][0] + nums[n]]

这样我们就成功找到了房间能够偷窃到的最高金额的规律

functionrob(nums:number[]):number{if(nums.length===1)returnnums[0]// 如果只有一个房间直接返回letarr=[[0,nums[0]]]// 二维数组存储房间最高金额情况 [未盗窃, 已盗窃][]// 循环计算每个房间的情况for(leti=1;i<nums.length;i++){arr.push([Math.max(arr[i-1][0],arr[i-1][1]),arr[i-1][0]+nums[i]])}// 返回最后一个房间的最大金额constlast=arr.pop()returnMath.max(last[0],last[1])};

我们可以看到每次循环都只用到了前一个房间的数据,所以我们可以考虑不用数组而是用两个变量来存储上一个房间的值。

functionrob(nums:number[]):number{if(nums.length===1)returnnums[0]// 如果只有一个房间直接返回letpreMax=nums[0]// 存储上一个房间能够偷窃到的最高金额letpreNo=0// 存储未偷盗情况下的最高金额// 循环计算每个房间的情况for(leti=1;i<nums.length;i++){constpreDo=preNo+nums[i]// 当前房间已偷盗preNo=preMax// 当前房间未偷盗为上一个房间的最大值preMax=Math.max(preNo,preDo)// 当前房间最大值为 当前房间未偷盗和已偷盗的最大值}// 返回最后一个房间的最大金额returnpreMax};

题目来源:力扣(LeetCode)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/29 22:11:00

触发器竞争冒险问题研究:系统学习规避方法

触发器竞争冒险问题研究&#xff1a;从原理到实战的系统性规避策略你有没有遇到过这样的情况——电路逻辑明明写得严丝合缝&#xff0c;仿真也完全正确&#xff0c;可烧进FPGA后却时不时“抽风”&#xff0c;状态跳转错乱、输出毛刺频发&#xff1f;更糟的是&#xff0c;这些问…

作者头像 李华
网站建设 2026/2/5 2:06:05

经济观察报评论:开源模型如何平衡公益与盈利?

经济观察报评论&#xff1a;开源模型如何平衡公益与盈利&#xff1f;——以 Fun-ASR 开源语音识别系统为例 在智能办公、远程协作和数字化转型加速的今天&#xff0c;语音转文字技术早已不再是实验室里的概念。从一场线上会议的自动纪要生成&#xff0c;到教育机构对讲座内容的…

作者头像 李华
网站建设 2026/2/3 18:07:49

深入浅出讲解W5500以太网模块原理图网络变压器作用

深入理解W5500以太网模块中的网络变压器&#xff1a;不只是“磁珠”&#xff0c;它是通信的守护者你有没有遇到过这样的情况&#xff1f;一个基于W5500的以太网模块&#xff0c;在实验室里跑得好好的&#xff0c;一拿到工厂现场就频繁断线、死机&#xff0c;甚至主控芯片莫名其…

作者头像 李华
网站建设 2026/2/5 1:17:45

jfrog artifactory:语音命名构建版本便于检索

JFrog Artifactory&#xff1a;语音命名构建版本便于检索 在企业级 AI 系统的持续迭代中&#xff0c;一个看似微小却影响深远的问题正悄然浮现&#xff1a;如何快速找到“那个能处理中文热词、启用了 ITN 的 Fun-ASR 构建包”&#xff1f; 这个问题背后&#xff0c;是现代语音识…

作者头像 李华
网站建设 2026/2/5 22:04:43

技术文档即营销:Fun-ASR手册中自然嵌入商品链接

技术文档即营销&#xff1a;Fun-ASR手册中自然嵌入商品链接 在AI模型日益“卷”性能的今天&#xff0c;一个有趣的现象正在发生——技术文档本身&#xff0c;正悄悄变成最有效的营销工具。 钉钉联合通义实验室推出的 Fun-ASR 语音识别系统&#xff0c;没有大张旗鼓地投放广告&a…

作者头像 李华
网站建设 2026/2/3 7:53:48

腾讯AI Lab评估:WeNet生态外的新选择出现

腾讯AI Lab评估&#xff1a;WeNet生态外的新选择出现 在语音识别技术逐渐渗透进日常办公、教育记录和医疗文档的今天&#xff0c;一个现实问题摆在开发者面前&#xff1a;如何让高精度ASR系统不再只是科研团队手中的“重型武器”&#xff0c;而是普通用户也能轻松上手的实用工具…

作者头像 李华