news 2026/2/11 9:54:05

LeetCode热题100--198. 打家劫舍--中等

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode热题100--198. 打家劫舍--中等

题目

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

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

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

示例 2:
输入:[2,7,9,3,1]
输出:12
解释:偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。
偷窃到的最高金额 = 2 + 9 + 1 = 12 。

题解

classSolution{publicintrob(int[]nums){intprev=0;intcurr=0;// 每次循环,计算“偷到当前房子为止的最大金额”for(inti:nums){// 循环开始时,curr 表示 dp[k-1],prev 表示 dp[k-2]// dp[k] = max{ dp[k-1], dp[k-2] + i }inttemp=Math.max(curr,prev+i);prev=curr;curr=temp;// 循环结束时,curr 表示 dp[k],prev 表示 dp[k-1]}returncurr;}}

解析

出自:图解动态规划的解题四步骤(C++/Java/Python)

classSolution{//定义解决方案类publicintrob(int[]nums){//函数rob以非相邻元素整型数组'nums'作为输入参数,并返回在该序列中可以窃取到的最大值。intprev=0;//初始化第一个状态为第零个房子(之前没有房子可偷取的状态)intcurr=0;//初始化第二个状态为第一个房子(当前已经进入了情况,可以开始考虑窃取下一个房子的情况)for(inti:nums){//这是对输入数组的遍历 - 'i'表示每个房子的金额。它涵盖了所有可能的元素(非相邻房屋的值,根据输入大小和长度而定)inttemp=Math.max(curr,prev+i);//计算如果我们当前处于数字'i'处时可以偷取到的最大金额。它等于当前可能窃取到的最大值和前一个状态下已经找过的最大的有效数+到目前为止的房间价格中的较大值prev=curr;//通过更新当前最大值和下一个最大值,将计算切换到输入数组的下一个房子(即将数字'i + 1'视作第k个状态)。它表示如果我们当前处于第(n - 2)个房子处时可以窃取到的最大金额curr=temp;//通过更新当前最大值和下一个最大值,将计算切换到输入数组的下一个房子(即将数字'i + 1'视作第k+1个状态)。它表示如果我们当前处于第(n - 1)个房子处时可以窃取到的最大金额returncurr;}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/7 3:41:04

wxappUnpacker深度剖析:逆向工程视角下的微信小程序源码解析

wxappUnpacker深度剖析:逆向工程视角下的微信小程序源码解析 【免费下载链接】wxappUnpacker 项目地址: https://gitcode.com/gh_mirrors/wxappu/wxappUnpacker 在移动应用开发领域,微信小程序以其轻量级、跨平台的特性迅速占领市场。然而&#…

作者头像 李华
网站建设 2026/2/6 19:24:59

免费终极指南:Elsevier稿件追踪插件——学术投稿进度可视化神器

免费终极指南:Elsevier稿件追踪插件——学术投稿进度可视化神器 【免费下载链接】Elsevier-Tracker 项目地址: https://gitcode.com/gh_mirrors/el/Elsevier-Tracker Elsevier稿件追踪插件是一款专为学术研究者设计的开源工具,能够实时监控Elsev…

作者头像 李华
网站建设 2026/2/6 0:39:55

策略路由和静态路由的区别是什么?

在日常工作中,我们经常听到“策略路由”和“静态路由”这两个术语。它们都是网络中用来决定数据包传输路径的方法,但具体区别在哪里呢?这个问题困扰着不少IT从业者。今天就来聊聊这两种路由方式的不同之处以及如何根据具体情况选择最适合的一种。简单来…

作者头像 李华
网站建设 2026/2/6 19:24:55

wxappUnpacker终极教程:5步搞定微信小程序源码解包

wxappUnpacker终极教程:5步搞定微信小程序源码解包 【免费下载链接】wxappUnpacker 项目地址: https://gitcode.com/gh_mirrors/wxappu/wxappUnpacker wxappUnpacker是一款强大的微信小程序解包工具,能够将wxapkg文件还原为可编辑的源代码。对于…

作者头像 李华