LeetCode 337. House Robber III 题解
来源:互联网 发布:云购cms qq回调地址 编辑:程序博客网 时间:2024/06/03 22:52
337. House Robber III
- Total Accepted: 30247
- Total Submissions: 73770
- Difficulty: Medium
- Contributors: Admin
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 1Maximum amount of money the thief can rob = 4 + 5 = 9.
解题思路:
注意到若选取父节点,则其左右子节点均不可选。如果不选取父节点,则左右子节点可以选也可以不选。
代码展示:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {private: vector<int> help(TreeNode* root){ if(!root) return vector<int> (2,0); vector<int> left = help(root->left); vector<int> right = help(root->right); vector<int> res(2,0); //res[0]保存不添加root结点的情况 //res[1]保存添加root结点的情况 // res[0] 不包括root结点,所以其子节点可以选择取或者不取 res[0]=max(left[0],left[1])+max(right[0],right[1]); // res[1] 包括root结点, 所以其子节点不可选取 res[1]=root->val+left[0]+right[0]; return res; } public: int rob(TreeNode* root){ vector<int> result = help(root); return max(result[0], result[1]); }};
0 0
- LeetCode 337. House Robber III 题解
- LeetCode题解——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
- 深入分析 iBATIS 框架之系统架构与映射原理
- 在Android Lollipop上使用JobScheduler API
- Asynchttpurlconnection 网络框架 (HttpURLConnection+newCachedThreadPool)
- 程序员:你知道自己的编程水平吗?
- 退回本页时,刷新本页
- LeetCode 337. House Robber III 题解
- 使用httpclient必须知道的参数设置及代码写法、存在的风险
- LeetCode(134) Gas Station
- Android Studio中setContentView时,无法加载R.layout.XXX文件
- 用20%替换字符串中的空格
- CodeForces 731C-Socks(联通图 并查集)
- 代码区、文字常量区、全局静态区、栈区、堆区的内存空间分布
- 使用requests.get下载大文件-Python
- 携程合体去哪儿,与途牛度假旅游市场争高下