LeetCode 337. House Robber III 动态演示
每个节点是个房间,数值代表钱。小偷偷里面的钱,不能偷连续的房间,至少要隔一个。问最多能偷多少钱
TreeNode* cur
mp[{cur, true}]表示以cur为根的树,最多能偷的钱
mp[{cur, false}]表示以cur为根的树,不偷cur节点的钱,最多能偷的钱
可以看出有下面的关系
mp[{node, false}] = mp[{node->left,true}] + mp[{node->right,true}]
mp[{node, true}] = max(node->val + mp[{node->left,false}] + mp[{node->right,false}], mp[{node, false}])
class Solution {
public:
void helper(TreeNode* node, map<pair<TreeNode*, bool>,int>& mp){
if(!node){
return;
}
//a(node)
//lk("root",node)
helper(node->left, mp);
helper(node->right, mp);
mp[{node, false}] = mp[{node->left,true}] + mp[{node->right,true}];
mp[{node, true}] = max(node->val + mp[{node->left,false}] + mp[{node->right,false}],
mp[{node, false}]);
//dsp
}
int rob(TreeNode* root) {
map<pair<TreeNode*, bool>,int> mp;
//amap(mp, pair<TreeNode*, bool>,int)
//ahd(root)
mp[{NULL, true}]=;
mp[{NULL, false}]=;
helper(root, mp);
return max(mp[{root, false}], mp[{root, true}]);
}
};
动态演示 http://simpledsp.com/FS/Html/lc337.html
LeetCode 337. House Robber III 动态演示的更多相关文章
- Leetcode 337. House Robber III
337. House Robber III Total Accepted: 18475 Total Submissions: 47725 Difficulty: Medium The thief ha ...
- [LeetCode] 337. House Robber III 打家劫舍 III
The thief has found himself a new place for his thievery again. There is only one entrance to this a ...
- [LeetCode] 337. House Robber III 打家劫舍之三
The thief has found himself a new place for his thievery again. There is only one entrance to this a ...
- Java [Leetcode 337]House Robber III
题目描述: The thief has found himself a new place for his thievery again. There is only one entrance to ...
- leetcode 198. House Robber 、 213. House Robber II 、337. House Robber III 、256. Paint House(lintcode 515) 、265. Paint House II(lintcode 516) 、276. Paint Fence(lintcode 514)
House Robber:不能相邻,求能获得的最大值 House Robber II:不能相邻且第一个和最后一个不能同时取,求能获得的最大值 House Robber III:二叉树下的不能相邻,求能 ...
- 337. House Robber III(包含I和II)
198. House Robber You are a professional robber planning to rob houses along a street. Each house ha ...
- LeetCode 113. Path Sum II 动态演示
给第一个目标值,返回一棵树从根到叶子所有和等于目标值的路径. 经典的深度优先算法 /** * Definition for a binary tree node. * struct TreeNode ...
- <LeetCode OJ> 337. House Robber III
Total Accepted: 1341 Total Submissions: 3744 Difficulty: Medium The thief has found himself a new pl ...
- 【LeetCode】337. House Robber III 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
随机推荐
- [CCPC-Wannafly & Comet OJ 夏季欢乐赛(2019)]飞行棋
题目链接:https://www.cometoj.com/contest/59/problem/E?problem_id=2714 求期望并且一堆转移基本上就是期望dp了(叉腰 照常的设dp[i]表示 ...
- Java JDK在Mac下的配置方法
Java JDK在Mac.Windows下的配置方法 Mac 第一步:下载JDK 官网下载地址 第二步:安装JDK 安装步骤很简单,一直点击下一步即可. 第三步:配置环境变量 打开terminal(终 ...
- HDU 1009 FatMouse' Trade题解
版权声明:本文作者靖心,靖空间地址:http://blog.csdn.net/kenden23/.未经本作者同意不得转载. https://blog.csdn.net/kenden23/article ...
- jQuery学习总结04-文档处理
1.append(content|fn) 说明:向每个匹配的元素内部追加内容. 这个操作与对指定的元素执行appendChild方法,将它们添加到文档中的情况类似. content(要追加到目标中的内 ...
- Winfrom中数据的双向绑定(使用INotifyPropertyChanged)
在WPF中新建项目是自动实现了INotifyPropertyChanged接口,用于数据绑定时非常的方便在winfrom中也可以实现INotifyPropertyChanged接口 将需要绑定的字段写 ...
- Linux性能优化从入门到实战:01 Linux性能优化学习路线
我通过阅读各种相关书籍,从操作系统原理.到 Linux内核,再到硬件驱动程序等等. 把观察到的性能问题跟系统原理关联起来,特别是把系统从应用程序.库函数.系统调用.再到内核和硬件等不同的层级贯 ...
- 读书笔记一、pandas之series
转自 # 直接传入一组数据 from pandas import Series, DataFrame obj = Series([4, 2, 3]) obj 0 4 1 2 2 3 dtype: in ...
- eclipse的代码格式化的个性配置
1.安装jdk a. 到http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载对应版本的jdk,安装到自己电脑上. ...
- python利用循环修改list内容
写这个主意是记录一下今天遇到的问题,两种循环方式,但是只有一种可以修改list的内容 a=[1,2,3,4,5,6] for i in a: i=7 print(a) 以上这种代码a的内容不变,这里特 ...
- 030:spaceless和autoescape 标签
1.spaceless 标签: spaceless 标签:移除html标签中的空白字符.包括空格.tab键.换行等.示例代码如下: {% spaceless %} <p> <a hr ...