力扣小白刷题之213题打家劫舍Ⅱ(环形)

题目描述

房屋围成一圈,即第一个房屋和最后一个房屋是紧挨着。不能偷相邻的房屋。
金额数组,求最高偷窃的金额。

分析

参考:https://leetcode-cn.com/problems/house-robber-ii/solution/213-da-jia-jie-she-iidong-tai-gui-hua-jie-gou-hua-/

环状排列意味着第一个房子和最后一个房子只能选择一个偷窃,(也可以都不偷,但因为金额都是非负数,这种情况肯定不是最优解)。因此可以把环状排列房间问题约化为两个单排排列房间 子问题:

1. 在不偷窃第一个房间的情况下(即nums[1 :]),最大金额是 p1
2. 在不偷窃最后一个房间的情况下(即nums[: n - 1]),最大金额是p2

**综合偷窃最大金额:**max(p1, p2)。

解题思路

  • 状态定义:

    • 设动态规划列表 dp,dp[i] 代表前 i 个房子在满足条件下能偷取到的最高金额。
  • 转移方程:

    • 设:有 n 个房子,前 n 间能偷窃到的最高金额是 dp[n],前 n - 1 间能偷窃到的最高金额是 dp[n - 1],此时向这些房子后加一间房,此房间价值为 num;
    • 加一间房后:由于不能抢相邻的房子,意味着抢第 n + 1 间就不能抢第 n 间;那么前 n + 1
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值