边工作边刷题:70天一遍leetcode: day 92
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相关推荐
- 边工作边刷题:70天一遍leetcode: day 94-1
Largest BST Subtree 要点: http://articles.leetcode.com/largest-binary-search-tree-bst-in 这题重点是理解题意,还有道 ...
- 边工作边刷题:70天一遍leetcode: day 11-2
Gas Station 老题,这种circular的题一般都能转化成单向的.比如这题就是用sumDiff来判断是否有解,而start单向递增. class Solution(object):def c ...
- 边工作边刷题:70天一遍leetcode: day 98
LRU Cache 这是一道leetcode的难题,这种题往往是算法结构很复杂,涉及一个或多个考点算法和数据结构的组合,同时又有很多corner cases要考虑.所以一定要找到合适memorize的 ...
- 边工作边刷题:70天一遍leetcode: day 97-2
Design Hit Counter 要点:因为是second granularity,所以可以用以秒为单位的circular buffer方法.这题简单在只需要count过去300秒的,增加难度可以 ...
- 边工作边刷题:70天一遍leetcode: day 73
Read N Characters Given Read4 I/II 要点:这题的要点就是搞清楚几个变量的内在逻辑:只有buffer是整4 bytes的.而client要读的bytes(需求)和实际上 ...
- 边工作边刷题:70天一遍leetcode: day 7
Max Points on a Line 要点:这题暴力解是用任何两点确定一条直线,然后对其他点检查是否共线,显然,这里没用空间来存储之前的检查结果,所以time complexity是O(n^3). ...
- 边工作边刷题:70天一遍leetcode: day 67-1
Rectangle Area 要点:基本思路就是先分开算再减去相交部分,这题的难点是如何检查是否相交和如何算出相交部分的面积. 2d转化为1d:x轴和y轴是orthogonal的.可以分开考虑.这样检 ...
- 边工作边刷题:70天一遍leetcode: day 6
Compare Version Numbers 题本身思路简单没什么可说的.值得一提的是corner case:多出来的0和没有是相同版本,这样最简单的处理是直接对没有的补0.这样因为需要补齐,循环是 ...
- 边工作边刷题:70天一遍leetcode: day 11-1
Clone Graph dfs或者bfs都可以做,这题的要点是hashmap有两个作用:一是图遍历中的visited,另一个是存copy的结点来连接neighbors.hashmap即表示visite ...
最新文章
- Nginx—核心配置location匹配规则说明
- hive执行流程(3)-Driver类分析1Driver类整体流程
- 白话Elasticsearch02- 结构化搜索之filter执行原理bitset机制与caching机制
- JVM面试问题系列:JVM 配置常用参数和常用 GC 调优策略
- swift 将图片保存到本地_如何保存微博的所有图片链接并下载图片到本地
- 40 个顶级 jQuery 图片、内容滑块和幻灯片
- 《Office 365 开发入门指南》
- poj1703Find them, Catch them(并查集以及路径压缩)
- 返回表达式列表中最小值least(exp1,exp2,exp3,……,expn)
- linux的内置的账户_6 款面向 Linux 用户的开源绘图应用程序
- 网络之NSURLConnection
- 菁英班OJ赛2022-2-24(第一周)
- 转载-计算机网络原理
- 电脑记事本中文都乱码了解决方法
- phpdesigner(php开发工具) 注册码,php 开发工具 phpDesigner7 附注册机
- 【笔记本触摸板失灵】终极解决办法
- python3换行符_python的换行符
- android 模拟器网易,网易MuMu全游戏平台 网易mumu模拟器
- word太大怎么压缩变小,word压缩方法
- .net framework 4.0 在 VS2010 安装目录下位置 dotNetFx40_Full_x86_x64.exe在磁盘哪个目录?...
热门文章
- 郑州大学研究生院 郑州大学产业技术研究院
- C#连接MySQL时出现Unable to connect to any of the specified MySQL hosts.错误
- window.navigator.userAgent用来区分设备和浏览器
- python sdk怎么用_如何使用七牛Python SDK写一个同步脚本及使用教程
- 用eclips连hadoop报Unknown protocol to job tracker: org.apache.hadoop.hdfs.protocol.ClientProtoco
- java ip地址相关操作
- 【Nutch基础教程之七】Nutch的2种运行模式:local及deploy
- java线程暂停与恢复suspend和resume
- 分布式锁用Redis还是Zookeeper?
- Innodb锁系统 Insert/Delete 锁处理及死锁示例分析