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

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

难度:medium

思路:该题在House Robber的基础上让首位链接形成环,那么即表示第一个和最后一个不能同时被抢,则问题分解为House Robber(nums[0:len(nums)-1])和House Robber(nums[1:len(nums)]),两者中比较大的那个即为结果

class Solution(object):def rob(self, nums):""":type nums: List[int]:rtype: int"""length = len(nums)if length == 0:return 0elif length == 1:return nums[0]elif length ==2:return max(nums[0], nums[1])return max(self.dfs(nums[1:]), self.dfs(nums[:-1]))def dfs(self, nums):if len(nums) == 2:return max(nums[0], nums[1])res = [0 for each in nums]res[0] = nums[0]res[1] = max(nums[0], nums[1])for index in xrange(2,len(nums)):res[index] = max(res[index -2] + nums[index], res[index - 1])return res[len(nums) - 1]

LeetCode 213 House Robber II Python相关推荐

  1. LeetCode 213. House Robber II(小偷游戏)

    原题网址:https://leetcode.com/problems/house-robber-ii/ Note: This is an extension of House Robber. Afte ...

  2. [leetcode] 213. House Robber II 解题报告

    题目链接:https://leetcode.com/problems/house-robber-ii/ Note: This is an extension of House Robber. Afte ...

  3. leetcode 213. House Robber II | 213. 打家劫舍 II(Java)

    题目 https://leetcode.com/problems/house-robber-ii/ 题解 这道题是「198. 打家劫舍」的进阶,和第 198 题的不同之处是,这道题中的房屋是首尾相连的 ...

  4. LeetCode 142. 环形链表 II - Python 快慢指针法+详解

    题目 142. 环形链表 II 难度中等761 给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的 ...

  5. 213. House Robber II

    一.题目 1.审题 2.分析 一个连续的数组,你能获取不连续的元素值代表的财富,数组首尾的两个元素算作连续,求能获得的最大财富值. 二.解答 1.思路: 在 198. House Robber 的基础 ...

  6. Leetcode 534打劫房屋II python

    描述 在上次打劫完一条街道之后,窃贼又发现了一个新的可以打劫的地方,但这次所有的房子围成了一个圈,这就意味着第一间房子和最后一间房子是挨着的.每个房子都存放着特定金额的钱.你面临的唯一约束条件是:相邻 ...

  7. 213. House Robber II 首尾相同的偷窃问题

    [抄题]: You are a professional robber planning to rob houses along a street. Each house has a certain ...

  8. 【Leetcode】213. 打家劫舍II(House Robber II)

    Leetcode - 213 House Robber II (Medium) 题目描述:一个小偷沿着一条环形的街偷窃,给定数组表示每家屋子的金额,如果偷窃连续的两间屋子就会触发警报,求在不触发警报的 ...

  9. leetcode 337. House Robber III | 337. 打家劫舍 III(树形dp;什么情况下dp需要强制包含当前元素?)

    题目 https://leetcode.com/problems/house-robber-iii/ 思考:什么情况下 dp 需要强制包含当前元素? dp 过程中,需要包含当前元素 的例子: leet ...

最新文章

  1. top刷新间隔_每天一个linux命令:top命令
  2. 【Flutter】shared_preferences 本地存储 ( 简介 | 安装 shared_preferences 插件 | 使用 shared_preferences 流程 )
  3. python tensorflow tf.Session().run()函数(运行操作并评估“fetches”中的张量)
  4. 四十、ETL工具的输入步骤
  5. 【Linux】一步一步学Linux——seq命令(221)
  6. Android 滑动效果基础篇(四)—— Gallery + GridView
  7. docker Redis集群
  8. linux推箱子脚本,【编程例题】标准C语言实现推箱子游戏!附解析!
  9. 售价扎心!索尼Xperia 5国行版开启预售:骁龙855+1200万后置三摄
  10. 电器缺水保护控制介绍
  11. 阿里云服务器ECS Ubuntu18.04 首次使用配置教程(图形界面安装)
  12. 【图像处理】基于matlab直方图医学图像处理【含Matlab源码 458期】
  13. Kaka集群生产者消费者使用实例(二)
  14. 低调的华丽:从服务器开发的角度认识 asp.net 中的回调技术
  15. asterisk连接sip139网络电话
  16. 宏源药业上市破发:跌幅16% 公司市值168亿超募17亿
  17. python离散积分_python 计算离散点的微分和积分(超详细)
  18. 【GameObject 类】 (四)SetActive 显示 / 隐藏游戏对象
  19. python使用nltk进行中文语料库的词频分布统计
  20. Saleae Logic 16 逻辑分析仪

热门文章

  1. java 中调用 Matlab 的函数
  2. python图形编程基础-Python从基础到入门系列教程
  3. Python入门100题 | 第057题
  4. 流式机器学习算法的入门和认知
  5. java中最容易犯错的特殊字符
  6. 99% 的人都能看懂的「补偿」以及最佳实践
  7. Flask部署和分发
  8. Generating RSA keys in PKCS#1 format in Java--转
  9. 当我们在谈深度学习时,到底在谈论什么(一)--转
  10. The Class Loader Hierarchy--转载