首页 > 其他分享 >leetcode力扣 213. 打家劫舍 II

leetcode力扣 213. 打家劫舍 II

时间:2024-05-25 23:11:04浏览次数:24  
标签:II nums int res 力扣 房屋 max leetcode size

计划偷窃沿街的房屋是小偷的计划。在这个地方,所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。但是,相邻的房屋都装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。

为了计算在不触动警报装置的情况下,今晚能够偷窃到的最高金额,我们给定了一个代表每个房屋存放金额的非负整数数组。

示例:

  • 输入:nums = [2,3,2]
  • 输出:3
  • 解释:小偷不能先偷窃第1号房屋(金额 = 2),然后偷窃第3号房屋(金额 = 2),因为他们是相邻的。

  • 输入:nums = [1,2,3,1]
  • 输出:4
  • 解释:小偷可以先偷窃第1号房屋(金额 = 1),然后偷窃第3号房屋(金额 = 3)。
    偷窃到的最高金额为1 + 3 = 4。

  • 输入:nums = [1,2,3]
  • 输出:3

提示:

  • 1 <= nums.length <= 100
  • 0 <= nums[i] <= 1000

题解:

状态表示:

f[i]

  • 集合: 只考虑前 i 个房屋(包含 i (0, i]), 偷盗房屋的所有方案

  • 属性: 最大值

状态计算:

  • 不选第 i 个房屋, -----> 状态转移方程1: f[i] = f[i - 1];
  • 选第 i 个房屋, -------> 状态转移方程2: f[i] = f[i - 2] + nums[i]; (不选第 i - 1个房子 的最大值 加上 第i个房子的价值 )

两式取max

因为房屋是围成圈的, 所以分为两种情况, "选第1个房屋, 不选最后一个屋子" 和 "不选第一个房屋, 选最后一个屋子", 两种情况都按照上面状态计算一下, 然后取max就是答案

好理解, 废空间的ac代码

标签:II,nums,int,res,力扣,房屋,max,leetcode,size
From: https://www.cnblogs.com/xxctx/p/18213027

相关文章

  • LeetCode/NowCoder-链表经典算法OJ练习4
    ·人的才华就如海绵的水,没有外力的挤压,它是绝对流不出来的。流出来后,海绵才能吸收新的源泉。......
  • 删除有序链表中重复的元素-II
    描述给出一个升序排序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。例如:给出的链表为1→2→3→3→4→4→51→2→3→3→4→4→5,返回1→2→51→2→5.给出的链表为1→1→1→2→31→1→1→2→3,返回2→32→3.数据范围:链表长度0≤n≤100000≤n≤......
  • LeetCode //C - 119. Pascal‘s Triangle II
    119.Pascal’sTriangleIIGivenanintegerrowIndex,returntherowIndexth(0-indexed)rowofthePascal’striangle.InPascal’striangle,eachnumberisthesumofthetwonumbersdirectlyaboveitasshown: Example1:Input:rowIndex=3Outpu......
  • Leetcode 417. 太平洋大西洋水流问题
    有一个m×n的矩形岛屿,与太平洋和大西洋相邻。“太平洋”处于大陆的左边界和上边界,而“大西洋”处于大陆的右边界和下边界。这个岛被分割成一个由若干方形单元格组成的网格。给定一个mxn的整数矩阵heights,heights[r][c]表示坐标(r,c)上单元格高于海......
  • leetcode 238
    思路如果想要不用除法运算,计算i位置上的结果时,需要i前面所有的乘积,和i后面所有的乘积。分别用两个数组存储,并计算顺序以及逆序的乘积:这样只需要遍历三遍就可以求得结果。如果想要节省空间,可以把前缀乘积和后缀乘积计算结果直接放到相应位置的output上面。第一遍存储上前缀乘......
  • Day 4 | 24. 两两交换链表中的节点 、 19.删除链表的倒数第N个节点 、面试题 02.07.
    24.两两交换链表中的节点用虚拟头结点,这样会方便很多。本题链表操作就比较复杂了,建议大家先看视频,视频里我讲解了注意事项,为什么需要temp保存临时节点。题目链接/文章讲解/视频讲解:https://programmercarl.com/0024.两两交换链表中的节点.html思考需要设置一个虚拟头节点,方......
  • 【每周例题】力扣 C++ 字符串相乘
    字符串相乘题目字符串相乘题目分析1.首先,题目上标出了一条:注意:不能使用任何内置的BigInteger库或直接将输入转换为整数。这就是这道题的难度所在2.这样子的话,我们可以从手写乘法计算来寻找思路: ①首先我们需要将各位相乘的结果放入数组ansArr中,我们使用双重for循环计算......
  • leetcode以及牛客网单链表相关的题、移除链表元素、链表的中间节点、合并两个有序链表
    文章目录前言一、移除链表元素二、链表的中间节点三、合并两个有序链表四、反转链表五、链表分割六、倒数第k个节点七、链表的回文结构八、相交链表九、判断链表是否有环十、判断环形链表的入口点十一、随机链表的复制总结前言leetcode以及牛客网单链表相关的题、移......
  • 【刷题笔记Day2】数组|977.有序数组的平方、209. 长度最小的子数组、59.螺旋矩阵II
    文章目录977.有序数组的平方解题思路遇到的问题及解决方案209.长度最小的子数组解题思路遇到的问题及解决方案59.螺旋矩阵II解题思路遇到的问题及解决方案总结977.有序数组的平方题目描述:给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新......
  • IIC时序分析
    转载博客:https://www.cnblogs.com/liujinggang/p/9656358.html以及https://www.cnblogs.com/xuyan123/p/14134246.html我也怕什么时候大神把博客删除了,后面这个链接简单明了,一下就让我看明白了iic的基础。一.IIC总线协议介绍:I2C总线是由数据线SDA和时钟SCL构成的串行......