【LeetCode】337. House Robber III
来源:互联网 发布:欧佩克石油库存数据 编辑:程序博客网 时间:2024/05/22 15:42
The thief has found himself a new place for his thievery again. There is only one entrance to this area, called the "root." Besides the root, each house has one and only one parent house. After a tour, the smart thief realized that "all houses in this place forms a binary tree". It will automatically contact the police if two directly-linked houses were broken into on the same night.
Determine the maximum amount of money the thief can rob tonight without alerting the police.
Example 1:
3 / \ 2 3 \ \ 3 1Maximum amount of money the thief can rob = 3 + 3 + 1 = 7.
Example 2:
3 / \ 4 5 / \ \ 1 3 1
Maximum amount of money the thief can rob = 4 + 5 = 9.
class Solution {public: map<TreeNode*,int> positive; map<TreeNode*,int> negative; int rob(TreeNode* root) { TreeNode* p=root; if(p==NULL){ positive[p]=0; negative[p]=0; return 0; }else{ negative[p]=rob(p->left)+rob(p->right); positive[p]=negative[p->left]+negative[p->right]+p->val; return positive[p]>negative[p]?positive[p]:negative[p]; } }};
思路心得:
DP题目,用两个表分别记录某屋子被抢和不被抢时,以其作为根节点时的最大受益。
所以在递推的时候
某点不被抢的最大受益则是其两个子树的最大收益之和
某点若被抢,则查表将其左右子树不被抢时的最大受益相加并加上该屋本身的受益。
然后对比被抢和不被抢的受益返回更大的一个值。
(PS:当初在计算某点不被抢的受益的时候我用了一个非常SB的方法,就是求出左右两子树被抢一边以及两边都被抢的情况,结果忘记加上左右两边都不被抢的情况了)
- [leetcode] 337. House Robber III
- LeetCode#337. House Robber III
- LeetCode *** 337. House Robber III
- [leetcode]337. House Robber III
- LeetCode-337. House Robber III
- [leetcode]337. House Robber III
- LeetCode-337.House Robber III
- LeetCode 337. House Robber III
- Leetcode 337. House Robber III
- leetcode 337. House Robber III
- LeetCode - 337. House Robber III
- 【LeetCode】337. House Robber III
- 【leetcode】337. House Robber III
- [leetcode] 337. House Robber III
- LeetCode 337. House Robber III
- 【LeetCode】337. House Robber III
- LeetCode 337. House Robber III
- LeetCode 337. House Robber III
- OpenLayers系列之-Geometry格式转换
- 使用haproxy在国内中转shadowsock访问gw外的网站
- 宏的使用
- iOS UILabel实现部分字段更改样式使用
- Kafka入门经典教程
- 【LeetCode】337. House Robber III
- hdu5734 Acperience(数学)
- opencv——操作图像中每一个像素
- 学习笔记:Architecture of Next Generation Apache Hadoop MapReduce Framework(不完全翻译)
- 汉诺塔
- 【软件工程】基准配置(基线配置)
- 在任意目录下使用某个shell脚本
- Android 支付宝API使用流程
- 7.21