【Leetcode】打家劫舍 I and 打家劫舍 II(动态规划)PYTHON
198.打家劫舍
题目表述:
你是一个专业的强盗,计划抢劫沿街的房屋。每间房都藏有一定的现金,阻止你抢劫他们的唯一的制约因素就是相邻的房屋有保安系统连接,如果两间相邻的房屋在同一晚上被闯入,它会自动联系警方。
给定一个代表每个房屋的金额的非负整数列表,确定你可以在没有提醒警方的情况下抢劫的最高金额。
PYTHON:
class Solution(object):def rob(self, nums):""":type nums: List[int]:rtype: int"""n = len(nums)ll = [0 for i in range(n)] if n == 0:return 0if n == 1:return nums[0]if n == 2:return max(nums)else:ll[0] = nums[0]ll[1] = max(nums[0],nums[1])for i in range(2,len(nums)):ll[i] = max(ll[i-2] + nums[i],ll[i-1])return ll[n-1]
- 打家劫舍 II
题目描述:
在上次盗窃完一条街道之后,窃贼又转到了一个新的地方,这样他就不会引起太多注意。这一次,这个地方的所有房屋都围成一圈。这意味着第一个房子是最后一个是紧挨着的。同时,这些房屋的安全系统与上次那条街道的安全系统保持一致。
给出一份代表每个房屋存放钱数的非负整数列表,确定你可以在不触动警报的情况下盗取的最高金额。
PYTHON:
class Solution(object):def rob(self, nums):""":type nums: List[int]:rtype: int"""n = len(nums)out1 = [0 for x in range(n)]out2 = [0 for x in range(n)]if n == 0:return 0if n == 1 :return nums[0]if n == 2 :return max(nums[0],nums[1]) else:out1[0] = nums[0] out2[1] = nums[1] out1[1] = max(nums[0],nums[1]) out2[2] = max(nums[1],nums[2]) for i in range(2,n-1):out1[i] = max(out1[i-2] + nums[i],out1[i-1]) out2[i+1] = max(out2[i-1] + nums[i+1],out2[i]) return max(out1[n-2],out2[n-1])
思路:因为房子是环形的,所以不能在打劫了第一座房子之后还打劫第二座房子,所以说分两种情况分别计算:1,不打劫第一座房子;2,不打劫最后一座房子,取最大即可。
【Leetcode】打家劫舍 I and 打家劫舍 II(动态规划)PYTHON相关推荐
- LeetCode:63. 不同路径 II(python、c++)
题目描述 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为& ...
- 每日一道算法题--leetcode 509--斐波那契数(动态规划)--python
[题目描述] [代码思路] 自底向上的动态规划,避免了采用递归浪费空间以及重复计算. [源代码] class Solution(object):def fib(self, N):"" ...
- leetcode动态规划(python与c++)
1 . 斐波那契数 class Solution:def fib(self, n: int) -> int:# if n==0:# return 0# elif n==1:# return 1# ...
- LeetCode 552. 学生出勤记录 II(动态规划)
文章目录 1. 题目 2. 解题 1. 题目 给定一个正整数 n,返回长度为 n 的所有可被视为可奖励的出勤记录的数量. 答案可能非常大,你只需返回结果mod 10^9 + 7的值. 学生出勤记录是只 ...
- LeetCode部分习题解答记录-动态规划
LeetCode部分习题解答记录-动态规划 动态规划 120.三角形最小路径和 方法:递归+记忆化 方法2:DP 64.最小路径和 方法1:递归 方法2:DP 从终点到起点,逐步更新 从起点到终点,逐 ...
- leetcode每日一题·买卖股票问题(Python)
leetcode每日一题·买卖股票问题(Python) 买卖股票的最佳时机(股票最大利润) 题目链接 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的 ...
- LeetCode实战:环形链表 II
背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 Given a lin ...
- LeetCode 935. 骑士拨号器(动态规划)
文章目录 1. 题目 2. 解题 1. 题目 国际象棋中的骑士可以按下图所示进行移动: 这一次,我们将 "骑士" 放在电话拨号盘的任意数字键(如上图所示)上, 接下来,骑士将会跳 ...
- LeetCode——552. 学生出勤记录 II(Student Attendance Record II)[困难]——分析及代码(Java)
LeetCode--552. 学生出勤记录 II[Student Attendance Record II][困难]--分析及代码[Java] 一.题目 二.分析及代码 1. 动态规划 (1)思路 ( ...
- LeetCode刷题——哈希表(python语言)
LeetCode刷题--哈希表(python语言) 一.哈希表 1.1 哈希表的概念 哈希表,也叫散列表.其实可以很像python的字典,也就是键(key)值(Hash(key))对,最简单也最常用的 ...
最新文章
- ndbcluster 批量修改表空间_Excel小技巧:使用这招快速保护你的工作表
- C++调用openssl使用sha256,并取结果前64位作为uint64
- 万字总结,体系化带你全面认识 Nginx
- 送你8个Python高效数据分析的技巧(附代码)
- 数字双胞胎技术和物联网如何帮助企业取得成功
- Python3并发检验代理池地址
- OpenCV Tracker简介
- Python标准库之csv(1)
- java工程引入scala_引入ReactiveInflux:用于Scala和Java的无阻塞InfluxDB驱动程序,支持Apache Spark...
- 使用xshell上传本地文件到服务器
- 2个程序员街头卖唱,挽救了自己的秃头
- 爬取《全职高手之巅峰荣耀》的豆瓣影评,分析漫改电影的优劣好坏
- “大数据”、“机器学习”、“深度学习”到底是什么?
- springboot文件上传 Required request part 'file' is not present
- 【笔记】Oracle触发器,根据另外一张表是否存在此记录,来判断是否更新
- 初学larval 第二篇(大神绕道哦,针对新手友好的一篇)
- 1.23 定语从句 感叹句
- 你投的简历提示不合适,建议参考STAR法则
- html5鼠标移过切换图片,鼠标移动到图片上切换到另一张图片,移出时又切默认图片...
- Flaash大气纠正 ENVI
热门文章
- linux中vim中文显示乱码
- Hibernate简易BaseDao演示单例
- ubuntu开机自动关闭独显,使用集成显卡
- php gd实现简单图片验证码与图片背景文字水印
- http://www.jb51.net/article/51934.htm
- 再次思考 classpath 环境变量 等
- jquery 之for 循环
- 你一直在用的Beam Search,是否真的有效?
- 【分享】电子科大第一位以第一作者在CVPR上发文的本科生,这个小哥哥用奋斗诠释优秀!...
- 哈希革新Transformer:这篇ICLR高分论文让一块GPU处理64K长度序列