Leetcode213-House Robber II

主升浪潜伏主图指标公式 提前潜伏,持仓待涨,通达信炒股指标公式 浙江世宝,第一次出现信号2022年6月1日,当日冲高回落,收涨3.48%,随后涨涨突破前高,回踩后出现第二次主升潜伏信号,时间2022年6月13日,当日收涨9.46%,后市连续涨停,走出12连板行情。九安医疗,第一次出现信号,黄色文字,当日2021年11月1日,涨幅0.19%,第二次出现信号一字涨停,没机会买进,第三次是T字,需要手快,后市连续上涨,接近20倍的大牛股。启明信息,突破区间后的回踩转涨位置出现信号,时间2021年11月29日,当日涨幅1.14%,次日爆发,波段涨幅152.65%。 阅读详情

我的新博客地址:HuHaoyu’s Blog,欢迎参观。

Note: This is an extension of House Robber.

After robbing those houses on that street, the thief has found himself a new place for his thievery so that he will not get too much attention. This time, all houses at this place are arranged in a circle. That means the first house is the neighbor of the last one. Meanwhile, the security system for these houses remain the same as for those in the previous street.

Given a list of non-negative integers representing the amount of money of each house, determine the maximum amount of money you can rob tonight without alerting the police.

分析

类似于之前的House Robber,唯一的区别在于房屋排列是环形的,而非线性,这样头和尾的房屋是不能同时被偷窃的。因此在原有的基础上增加一个状态,即第一间房屋是否被偷窃。

采用两位二进制数表示偷窃到第i家时的状态,高位表示是否在第1家偷窃,低位表示是否在第i家偷窃。比如:

0001
不在第1家偷窃,也不在第i家偷窃不在第1家偷窃,但在第i家偷窃
1011
在第1家偷窃,但不在第i家偷窃在第1家偷窃,也在第i家偷窃

由此,到达第i家时的状态如下:

robMoney[i][0] = max(robMoney[i-1][0], robMoney[i-1][1]);
robMoney[i][1] = robMoney[i-1][0] + nums[i];
robMoney[i][2] = max(robMoney[i-1][2], robMoney[i-1][3]);
robMoney[i][3] = robMoney[i-1][2] + nums[i];

注意

  • 应特别注意的是,最后一家只能有状态00, 01, 10。
  • 同时,应特殊处理只有1家的情况,此时11才是正确的状态。
  • 第1家时,01, 10是矛盾的状态,robMoney设为MIN_INT。

AC代码

class Solution {
public:
    const static int MIN_INT = -999999999;

    int rob(vector<int>& nums) {
        int houseNumber = nums.size();
        if (!houseNumber) return 0;
        if (houseNumber == 1) return nums[0];
        int robMoney[houseNumber][4];

        for (int i = 0; i != houseNumber; ++i) {
            for (int j = 0; j != 4; ++j) {
                robMoney[i][j] = 0;
            }
        }

        robMoney[0][3] = nums[0];
        robMoney[0][1] = robMoney[0][2] = MIN_INT;

        for (int i = 1; i < houseNumber; ++i) {
            robMoney[i][0] = max(robMoney[i-1][0], robMoney[i-1][1]);
            robMoney[i][1] = robMoney[i-1][0] + nums[i];
            robMoney[i][2] = max(robMoney[i-1][2], robMoney[i-1][3]);
            robMoney[i][3] = robMoney[i-1][2] + nums[i];
        }

        return max(robMoney[houseNumber-1][0], robMoney[houseNumber-1][1], robMoney[houseNumber-1][2]);
    }

    int max(int x, int y) { return x > y ? x : y; }

    int max(int x, int y, int z) {
        if (x >= y && x >= z) return x;
        if (y >= x && y >= z) return y;
        return z;
    }
};

如代码或分析有误,请批评指正。谢谢。

Windows10下安装VMware16虚拟机 由于本人系统为Windows 10 家庭中文版,无法安装Linux子系统WSL,虽然网上也有强制安装的方法,但为保险起见,还是把之前的VMware虚拟机重新进行安装,并浅浅记录一下安装过程。 阅读详情

相关推荐

nRF5340双核实战:从Zephyr环境搭建到蓝牙协议栈部署

本文详细介绍了nRF5340双核处理器的开发实践,包括Zephyr环境搭建、蓝牙协议栈部署及双核协同工作配置。通过实战案例展示了如何利用nRF5340的双核异构架构提升蓝牙应用性能,并提供了调试技巧与资源优化建议,帮助开发者高效实现低功耗蓝牙设备开发。

weixin_42525385的博客 380

Leetcode 213. House Robber II(python+cpp)

Leetcode 213. House Robber II题目解法:动态规划 题目 You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed. All houses at this place are arranged i...

qq_37821701的博客 402

线上专利申请(超详细)| 签名确认

在【法人登录】页面点击【证书登录】按钮,弹出证书登录提示框,点击【确 认】按钮,进入到输入证书密码页面,点击【取消】按钮,取消本次操作。企业在提交申请时,需要增加签名,如使用企业账户点击提交,会弹出“法人、代理机构不能签名,请使用经办人签名”,这个时候就需要换个账号了。在需要签名时,将专利官网的登录方式点击法人登录,选择扫码登录,使用移动端经办人账户的扫一扫功能扫描登录。登录完成后,再点击签名,使用移动端扫一扫功能,扫描签名,输入证书号,确认签名,并提交。最后,祝大家的申请都成功!

weixin_62112323的博客 9110

leetcode 213 : House Robber II

leetcode 213 : House Robber II

西施豆腐渣 1万+

C#粘包和分包问题及解决方法

一:通过图解法来描述一下分包和粘包,这样客户更清晰直观的了解:  下面对上面的图进行解释:  1.正常情况:如果Socket Client 发送的数据包,在Socket Server端也是一个一个完整接收的,那个就不会出现粘包和分包情况,数据正常读取。  2.粘包情况:Socket Client发送的数据包,在客户端发送和服务器接收的情况下都有可能发送,因为客户端发送的数据都是发送的一个缓冲...

weixin_42033401的博客 7767

Multisim 11.0的安装破解汉化步骤

15:打开注册机,选择管理员运行,默认第一项,选择生成文件路径,这里不要随意选择,要找到你安装Multisim安装路径下Shard下的License Manager路径下,否则会报错,破解失败。14:后面会出现一个更新提示,选择否,然后选择重启电脑后,先不要选择重启电脑,在这里出现了问题(可能敲击回车,默认去重启电脑了),所以我说不要重启电脑,重启破解时右下角出现这,点击否。17:重启电脑,如果前面重启过,那可以跳过重启,应用程序下找到下图所示,启动。16:点击确认覆盖,路径下生成了该文件。

qq_53260940的博客 2371

LeetCode-213. House Robber II [C++][Java]

You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed. All houses at this place arearranged in a circle.That means the first house is the neighbor of the last one.

贫道绝缘子的博客 471

告别机床‘卡顿’!用C语言在STM32上实现连续小线段速度前瞻(附开源代码)

本文详细介绍了如何在STM32上使用C语言实现工业级连续小线段速度前瞻控制器,解决机床运动控制中的卡顿问题。通过轻量级算法框架设计和混合精度计算策略,显著提升加工效率和表面质量。文章包含开源代码和实战案例,帮助开发者快速掌握速度前瞻规划算法在嵌入式系统中的应用。

weixin_42571738的博客 186

【Leetcode】213. 打家劫舍II(House Robber II)

Leetcode - 213 House Robber II (Medium) 题目描述:一个小偷沿着一条环形的街偷窃,给定数组表示每家屋子的金额,如果偷窃连续的两间屋子就会触发警报,求在不触发警报的前提下,偷窃的最大金额。 Input: [2,3,2] Output: 3 Explanation: You cannot rob house 1 (money = 2) and then rob h...

厉兵秣码 203

5G NR 双连接与载波聚合:PCell、SCell、PScell、SpCell 角色全解析

本文全面解析了5G NR中双连接与载波聚合技术的关键概念,详细介绍了PCell、SCell、PScell和SpCell的角色与功能。通过实际案例和配置示例,帮助读者理解这些小区在提升网络覆盖和速率方面的作用,以及在实际组网中的优化策略。

weixin_33220360的博客 373

Python爬虫实战【房产刚需专属】:爬取链家/贝壳完整房源数据,精准筛选刚需房源【房价+户型+地段+面积+装修】

本次爬虫的核心亮点就是刚需专属筛选,我已经把刚需买房的主流筛选逻辑封装为独立函数,你只需要修改筛选参数,就能精准匹配你的需求无需懂Python语法,直接改数字/文字即可!本次爬虫是刚需买房+Python爬虫实战的完美结合。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1824

LeetCode213:House Robber II

Note: This is an extension of House Robber. After robbing those houses on that street, the thief has found himself a new place for his thievery so that he will not get too much attention. This time

2589

【Unity 实用工具篇】| Unity中 实现背景模糊效果,简单易用

背景模糊 是一个很实用的功能,它可以帮助游戏在视觉上有更好的专注力和表现力。 实现模糊的种类和方式有很多种,大家自行选择适合自己的就可以了。 下面一起来看下本文实现背景模糊的效果和使用方式吧!

努力前行,总会成为自己心中的那道光 4万+

LeetCode 213. House Robber II 题解

本题是打家劫舍问题的变种,主要考察对动态规划的理解和应用。由于房屋围成一圈,我们需要将问题分解为两个子问题,分别计算不偷窃第一个房屋和不偷窃最后一个房屋的情况,然后取最大值。动态规划的核心思想是:通过分解问题,将复杂的环形问题转化为两个线性问题,然后使用与打家劫舍 I 相同的方法解决每个子问题。这种方法不仅适用于打家劫舍 II 问题,还可以应用于许多其他需要分解问题的场景。掌握动态规划的思想,对于解决这类问题非常重要。

cannonjinx的博客 4225

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

[LeetCode] 213. House Robber II

原题链接: https://leetcode.com/problems/house-robber-ii/ House Robber 专题相关题目 198. House Robber 1. 题目介绍 You are a professional robber planning to rob houses along a street. Each house has a certain amount ...

Ber03的博客 307

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

LeetCode 213 House Robber II

题目描述Note: This is an extension of House Robber.After robbing those houses on that street, the thief has found himself a new place for his thievery so that he will not get too much attention. This time,

Yano_nankai的博客 1401

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

LeetCode //C - 213. House Robber II

【代码】LeetCode //C - 213. House Robber II。

Made in Code 1198

Leetcode 213 House Robber II

Leetcode 213 House Robber II题目思路代码 题目 You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed. All houses at this place are arranged in a circle. That means the first house is the neighbor of th

weixin_43796689的博客 189

【LeetCode】213. House Robber II

题目: After robbing those houses on that street, the thief has found himself a new place for his thievery so that he will not get too much attention. This time, all houses at this place are arranged in

Artemis96的博客 1020

Leetcode 213 House Robber II 抢劫最大金额

HouseRobber扩展:抢劫完那条街道上的房子之后,这个贼有找到了实施自己盗窃行动的另一个地点,这样他才不会引来太多注意。这次,这里的搜有房子排成了一个圆圈,这意味着第一个房子和最后一个房子也是挨着的。与此同时,房子的安保系统还是和之前那条街上的一样(不能同时抢劫两所相邻的房子,否则会报警)

(ง •̀_•́)ง 1353

【Leetcode】213. House Robber II 【动态规划】

213. House Robber II Note: This is an extension of House Robber. After robbing those houses on that street, the thief has found himself a new place for his thievery so that he will not get too

renxingzhadan的专栏 644

LeetCode 213: House Robber II

https://notes.daiyuhe.com/leetcode-213-house-robber-ii/ House Robber II You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed. All hou...

daiyuhe的博客 309

Leetcode #213 House Robber II

Note: This is an extension of House Robber. After robbing those houses on that street, the thief has found himself a new place for his thievery so that he will not get too much attention. This time

每天都要有进步 287

[leetcode 213]House Robber II

Note: This is an extension of House Robber. After robbing those houses on that street, the thief has found himself a new place for his thievery so that he will not get too much attention. This time

ER_Plough的专栏 678

LeetCode 213. House Robber II (Java版; Meidum)

welcome to my blog LeetCode 213. House Robber II (Java版; Meidum) 题目描述 You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed. All houses...

littlehaes的博客 355

【Leetcode】213. House Robber II

213. House Robber II You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed. All houses at this place are arranged in a circle. That mean...

蒋志碧的博客 353
上一篇: Leetcode212-Word Search II
下一篇: Leetcode214-Shortest Palindrome
coderhuhy
博客等级 码龄12年 24粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值