当前位置:网站首页>leetcode:337. 打家劫舍 III
leetcode:337. 打家劫舍 III
2022-08-10 16:39:00 【OceanStar的学习笔记】
题目来源
题目描述
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode() : val(0), left(nullptr), right(nullptr) {
}
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {
}
TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {
}
};
class Solution {
public:
int rob(TreeNode* root) {
}
};
题目解析
对于每一个node,它有两种决策:
- 偷当前节点,那么它的左右子树均不能偷
- 不偷当前节点,那么它的左右子树可以偷也可以不偷
因此,每次都需要从左树和右树中我们都需要 偷,不偷的最大收益
class Solution {
struct Info{
int yes;
int no;
Info(int y, int n) : yes(y), no(n){
}
};
Info * process(TreeNode* root){
if(root == nullptr){
return new Info(0, 0);
}
auto left = process(root->left);
auto right = process(root->right);
int yes = 0, no = 0;
yes = root->val + left->no + right->no; // 偷当前节点,那么子节点均不能偷
no = std::max(left->yes, left->no) + std::max(right->yes, right->no); // 不偷当前节点,那么子节点可偷可不偷
return new Info(yes, no);
}
public:
int rob(TreeNode* root) {
auto item = process(root);
return std::max(item->yes, item->no);
}
};
类似题目
边栏推荐
猜你喜欢
2022 CCF China Open Source Conference Notice (Fourth Round)
剑指OfferⅡ 045.二叉树最底层最左边的值 dfs
易基因|深度综述:m6A RNA甲基化在大脑发育和疾病中的表观转录调控作用
险资又做LP,一出手40亿
How to realize full backup and incremental backup of MySQL database
Embedded Development: Embedded Basics - Mapping Peripherals Using Arrays of Pointers
How to use bitwise operators in C language
训练一个神经网络要多久,神经网络训练时间过长
国内油价四连跌,但下跌趋势可能终止
PC软件问题二[Win10系统将UltraEdit添加到右键菜单的方法]
随机推荐
Etcd Kubernetes 集群稳定性:LIST 请求源码分析、性能评估与大规模基础服务部署调优
JWT 实现登录认证 + Token 自动续期方案
解决mpi4py导入报错ImportError: libmpi.so.40: cannot open shared object file: No such file or directory
软件工程基础知识--需求分析
PNG如何变gif?教你一招png秒变gif动图的方法
App自动化测试框架设计与实现
需求骤降,成本激增,PC行业再次入冬
李斌带不动的长安新能源高端梦,华为和“宁王”能救吗?
Meaning of CDF graph
让页面滚动到指定位置
神经网络有哪些激活函数,卷积神经网络有哪些
险资又做LP,一出手40亿
LeetCode-1. Two Sum
【JDK】Oracle又一个JDK大版本停止扩展技术支持
蓝桥ROS之 cmake gcc g++ 默认版本和升级
Taurus.MVC WebAPI 入门开发教程4:控制器方法及参数定义、获取及基础校验属性【Require】。
雷达人体存在感应器,人体感知控制应用,为客户提供真实的感知方案
找到一个超级神奇,百试百灵的解决 ModuleNotFoundError: No module named xxx 的方法
年薪60万+?这份10万字的面试突击宝典涵盖阿里 P5 工程师~P7 所有技术栈
shell中判断文件目录是否存在