题目描述

你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。
给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。
示例 1:
输入: [2,3,2]
输出: 3
解释: 你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻的。
示例 2:
输入: [1,2,3,1]
输出: 4
解释: 你可以先偷窃 1 号房屋(金额 = 1),然后偷窃 3 号房屋(金额 = 3)。
偷窃到的最高金额 = 1 + 3 = 4 。

思路

详见链接

代码

class Solution:def rob(self,nums) -> int:if not nums:return 0if len(nums) == 1:return nums[0]def helper(nums):if not nums:return 0if len(nums) == 1:return nums[0]n = len(nums)dp = [0]*(n+1)dp[1] = nums[0]for i in range(2,n+1):dp[i] = max(dp[i-1] , dp[i-2] + nums[i-1])print(dp)return dp[-1]return max(helper(nums[1:]) , helper(nums[:-1]))
test = Solution()
test.rob([2,3,2])

效果

LeetCode 213. 打家劫舍 II(动态规划)相关推荐

  1. 103. Leetcode 213. 打家劫舍 II (动态规划-打家劫舍)

    步骤一.确定状态: 确定dp数组及下标含义 dp数组和房屋数一样大小, dp[i]表示到第i个房屋的时候, 能够偷窃到的最 高金额 步骤二.推断状态方程: 对于当前的dp[i], 有两个方向,取决于能 ...

  2. LeetCode—213. 打家劫舍 II

    213. 打家劫舍 II 题目描述:你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金.这个地方所有的房屋都围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的.同时,相邻的房屋装有相 ...

  3. leetcode - 213. 打家劫舍 II

    解题思路:这道题是"打家劫舍I"的升级版,和"打家劫舍I"的区别在于"打家劫舍II"的第一个房子和最后一个房子是相连的,这就导致不能用&qu ...

  4. [C++] LeetCode 213. 打家劫舍 II

    题目 注意事项: 这是 打家劫舍 的延伸. 在上次盗窃完一条街道之后,窃贼又转到了一个新的地方,这样他就不会引起太多注意.这一次,这个地方的所有房屋都围成一圈.这意味着第一个房子是最后一个是紧挨着的. ...

  5. leetcode 213. 打家劫舍 II(dp)

    你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金.这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的.同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房 ...

  6. LeetCode 213. 打家劫舍 II

    你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金.这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的.同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在 ...

  7. Leetcode 213. 打家劫舍 II (每日一题 20211009)

    你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金.这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的.同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房 ...

  8. 213. 打家劫舍 II golang 动态规划

    题目 213. 打家劫舍 II 198. 打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金.这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的.同时,相 ...

  9. 动态规划——斐波那契数列(70. 爬楼梯、198. 打家劫舍、213. 打家劫舍II、信件错排、母牛生产)

    递归和动态规划都是将原问题拆分成多个子问题然后求解,但是动态规划存储了子问题的解,不需要重复计算. 动态规划(Dynamic Programming,DP)需要转移方程和边界条件. 目录 一.70. ...

最新文章

  1. android专题-数据库Room
  2. 参数cluster_interconnect详细介绍
  3. 前端学习(3197):jsx语法规则1
  4. sql server 修改字段不能为空_SQL-SQL介绍
  5. 静态html如何写入文件,静态HTML模板渲染
  6. python读取不到文件怎么办_Python从子目录中找不到的目录文件读取文件(在那里)...
  7. esx4克隆后的处理工作
  8. JavaScript-封装与继承(两种)
  9. 栈的基本操作(详细)
  10. 运算放大电路设计实验
  11. mhdd测试hdd硬盘软件,硬盘检测工具mhdd
  12. python bin文件转换成txt文件
  13. WPS安装后显示系统字体找不到
  14. 新版Android Studio Logcat view使用简明教程
  15. Acrel-3000电能管理系统保证企业生产人员的生命安全,提高生产人员的工作效率
  16. OpenWrt之DNS设置
  17. win10开机启动文件夹路径
  18. Intellij IDEA社区版下载与安装教程
  19. django+vue全
  20. ADC 信号调理电路设计——必要措施、实测验证和应用说明(转载)

热门文章

  1. 使用AWS DMS 升级Postgre 10到12
  2. 启用计算机浏览器摄像头,如何启用浏览器进行摄像头访问?
  3. 29_海星资讯9月29日报
  4. RedHat Linux 7安装CentOS 7 yum源
  5. mysql定制化_【MySQL技巧】定制你的MySQL命令行
  6. android layout 渲染,java – 渲染android.support.design.widget.CoordinatorLayout的问题
  7. WebSocket 对象简介
  8. 修改现有用户帐户的 Microsoft Lync Server 2010 属性
  9. SQL2005 游标学习
  10. NLP知识包--语义分析-语义角色标注