LeetCode 213. 打家劫舍 II(动态规划)
题目描述
你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。
给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。
示例 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(动态规划)相关推荐
- 103. Leetcode 213. 打家劫舍 II (动态规划-打家劫舍)
步骤一.确定状态: 确定dp数组及下标含义 dp数组和房屋数一样大小, dp[i]表示到第i个房屋的时候, 能够偷窃到的最 高金额 步骤二.推断状态方程: 对于当前的dp[i], 有两个方向,取决于能 ...
- LeetCode—213. 打家劫舍 II
213. 打家劫舍 II 题目描述:你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金.这个地方所有的房屋都围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的.同时,相邻的房屋装有相 ...
- leetcode - 213. 打家劫舍 II
解题思路:这道题是"打家劫舍I"的升级版,和"打家劫舍I"的区别在于"打家劫舍II"的第一个房子和最后一个房子是相连的,这就导致不能用&qu ...
- [C++] LeetCode 213. 打家劫舍 II
题目 注意事项: 这是 打家劫舍 的延伸. 在上次盗窃完一条街道之后,窃贼又转到了一个新的地方,这样他就不会引起太多注意.这一次,这个地方的所有房屋都围成一圈.这意味着第一个房子是最后一个是紧挨着的. ...
- leetcode 213. 打家劫舍 II(dp)
你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金.这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的.同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房 ...
- LeetCode 213. 打家劫舍 II
你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金.这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的.同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在 ...
- Leetcode 213. 打家劫舍 II (每日一题 20211009)
你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金.这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的.同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房 ...
- 213. 打家劫舍 II golang 动态规划
题目 213. 打家劫舍 II 198. 打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金.这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的.同时,相 ...
- 动态规划——斐波那契数列(70. 爬楼梯、198. 打家劫舍、213. 打家劫舍II、信件错排、母牛生产)
递归和动态规划都是将原问题拆分成多个子问题然后求解,但是动态规划存储了子问题的解,不需要重复计算. 动态规划(Dynamic Programming,DP)需要转移方程和边界条件. 目录 一.70. ...
最新文章
- android专题-数据库Room
- 参数cluster_interconnect详细介绍
- 前端学习(3197):jsx语法规则1
- sql server 修改字段不能为空_SQL-SQL介绍
- 静态html如何写入文件,静态HTML模板渲染
- python读取不到文件怎么办_Python从子目录中找不到的目录文件读取文件(在那里)...
- esx4克隆后的处理工作
- JavaScript-封装与继承(两种)
- 栈的基本操作(详细)
- 运算放大电路设计实验
- mhdd测试hdd硬盘软件,硬盘检测工具mhdd
- python bin文件转换成txt文件
- WPS安装后显示系统字体找不到
- 新版Android Studio Logcat view使用简明教程
- Acrel-3000电能管理系统保证企业生产人员的生命安全,提高生产人员的工作效率
- OpenWrt之DNS设置
- win10开机启动文件夹路径
- Intellij IDEA社区版下载与安装教程
- django+vue全
- ADC 信号调理电路设计——必要措施、实测验证和应用说明(转载)
热门文章
- 使用AWS DMS 升级Postgre 10到12
- 启用计算机浏览器摄像头,如何启用浏览器进行摄像头访问?
- 29_海星资讯9月29日报
- RedHat Linux 7安装CentOS 7 yum源
- mysql定制化_【MySQL技巧】定制你的MySQL命令行
- android layout 渲染,java – 渲染android.support.design.widget.CoordinatorLayout的问题
- WebSocket 对象简介
- 修改现有用户帐户的 Microsoft Lync Server 2010 属性
- SQL2005 游标学习
- NLP知识包--语义分析-语义角色标注