House Robber I/II/III

这题代表了单向线性dp的基本pattern: build local best value at each element and track the global optimal. 这题的要点是local是前k个房间的最优解,这个解不一定要选第k个房间。这个local解是比较k-1的optimal和k-2 optimal + current value。之所以不以必选第k个房间作local是因为有可能最优解有连续2或多个房间不选,比如100,1,1,100

III:

  • binary tree和array的思路是一样的,对于当前root,需要前面两层的结果:left/right subtree的max和left/right的子树的max
  • 同时,和array一样,返回的值不是必然包括root的
  • 在计算left/right子树的max时,只需要sum,因为root对于两层后只关心sum
class Solution(object):def rob(self, nums):""":type nums: List[int]:rtype: int"""if not nums: return 0pre_2 = nums[0]if len(nums)<2: return pre_2pre_1 = max(nums[0],nums[1])cur = pre_1for i in range(2, len(nums)):cur = max(pre_1, pre_2+nums[i])pre_2=pre_1pre_1=curreturn cur
class Solution(object):def rob(self, nums):""":type nums: List[int]:rtype: int"""def robOneDir(nums):pre_1 = nums[0]pre_2 = max(nums[0], nums[1])for i in range(2, len(nums)):cur = max(pre_2, pre_1+nums[i])pre_1=pre_2pre_2=curreturn pre_2if not nums: return 0if len(nums)<2: return nums[0]if len(nums)==2: return max(nums[0], nums[1])nums1,nums2=nums[0:-1],nums[1:]return max(robOneDir(nums1), robOneDir(nums2))
# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = Noneclass Solution(object):def rob(self, root):""":type root: TreeNode:rtype: int"""def robRec(root):pre_left_1,pre_left_2,pre_right_1,pre_right_2=0,0,0,0if root.left:pre_left_1, pre_left_2 = robRec(root.left)if root.right:pre_right_1, pre_right_2 = robRec(root.right)cur = max(pre_left_2+root.val+pre_right_2, pre_left_1+pre_right_1)return cur, pre_left_1+pre_right_1if not root: return 0maxValue, noUse = robRec(root)return maxValue

转载于:https://www.cnblogs.com/absolute/p/6041360.html

边工作边刷题:70天一遍leetcode: day 92相关推荐

  1. 边工作边刷题:70天一遍leetcode: day 94-1

    Largest BST Subtree 要点: http://articles.leetcode.com/largest-binary-search-tree-bst-in 这题重点是理解题意,还有道 ...

  2. 边工作边刷题:70天一遍leetcode: day 11-2

    Gas Station 老题,这种circular的题一般都能转化成单向的.比如这题就是用sumDiff来判断是否有解,而start单向递增. class Solution(object):def c ...

  3. 边工作边刷题:70天一遍leetcode: day 98

    LRU Cache 这是一道leetcode的难题,这种题往往是算法结构很复杂,涉及一个或多个考点算法和数据结构的组合,同时又有很多corner cases要考虑.所以一定要找到合适memorize的 ...

  4. 边工作边刷题:70天一遍leetcode: day 97-2

    Design Hit Counter 要点:因为是second granularity,所以可以用以秒为单位的circular buffer方法.这题简单在只需要count过去300秒的,增加难度可以 ...

  5. 边工作边刷题:70天一遍leetcode: day 73

    Read N Characters Given Read4 I/II 要点:这题的要点就是搞清楚几个变量的内在逻辑:只有buffer是整4 bytes的.而client要读的bytes(需求)和实际上 ...

  6. 边工作边刷题:70天一遍leetcode: day 7

    Max Points on a Line 要点:这题暴力解是用任何两点确定一条直线,然后对其他点检查是否共线,显然,这里没用空间来存储之前的检查结果,所以time complexity是O(n^3). ...

  7. 边工作边刷题:70天一遍leetcode: day 67-1

    Rectangle Area 要点:基本思路就是先分开算再减去相交部分,这题的难点是如何检查是否相交和如何算出相交部分的面积. 2d转化为1d:x轴和y轴是orthogonal的.可以分开考虑.这样检 ...

  8. 边工作边刷题:70天一遍leetcode: day 6

    Compare Version Numbers 题本身思路简单没什么可说的.值得一提的是corner case:多出来的0和没有是相同版本,这样最简单的处理是直接对没有的补0.这样因为需要补齐,循环是 ...

  9. 边工作边刷题:70天一遍leetcode: day 11-1

    Clone Graph dfs或者bfs都可以做,这题的要点是hashmap有两个作用:一是图遍历中的visited,另一个是存copy的结点来连接neighbors.hashmap即表示visite ...

最新文章

  1. Nginx—核心配置location匹配规则说明
  2. hive执行流程(3)-Driver类分析1Driver类整体流程
  3. 白话Elasticsearch02- 结构化搜索之filter执行原理bitset机制与caching机制
  4. JVM面试问题系列:JVM 配置常用参数和常用 GC 调优策略
  5. swift 将图片保存到本地_如何保存微博的所有图片链接并下载图片到本地
  6. 40 个顶级 jQuery 图片、内容滑块和幻灯片
  7. 《Office 365 开发入门指南》
  8. poj1703Find them, Catch them(并查集以及路径压缩)
  9. 返回表达式列表中最小值least(exp1,exp2,exp3,……,expn)
  10. linux的内置的账户_6 款面向 Linux 用户的开源绘图应用程序
  11. 网络之NSURLConnection
  12. 菁英班OJ赛2022-2-24(第一周)
  13. 转载-计算机网络原理
  14. 电脑记事本中文都乱码了解决方法
  15. phpdesigner(php开发工具) 注册码,php 开发工具 phpDesigner7 附注册机
  16. 【笔记本触摸板失灵】终极解决办法
  17. python3换行符_python的换行符
  18. android 模拟器网易,网易MuMu全游戏平台 网易mumu模拟器
  19. word太大怎么压缩变小,word压缩方法
  20. .net framework 4.0 在 VS2010 安装目录下位置 dotNetFx40_Full_x86_x64.exe在磁盘哪个目录?...

热门文章

  1. 郑州大学研究生院 郑州大学产业技术研究院
  2. C#连接MySQL时出现Unable to connect to any of the specified MySQL hosts.错误
  3. window.navigator.userAgent用来区分设备和浏览器
  4. python sdk怎么用_如何使用七牛Python SDK写一个同步脚本及使用教程
  5. 用eclips连hadoop报Unknown protocol to job tracker: org.apache.hadoop.hdfs.protocol.ClientProtoco
  6. java ip地址相关操作
  7. 【Nutch基础教程之七】Nutch的2种运行模式:local及deploy
  8. java线程暂停与恢复suspend和resume
  9. 分布式锁用Redis还是Zookeeper?
  10. Innodb锁系统 Insert/Delete 锁处理及死锁示例分析