当前位置:网站首页>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);
}
};
类似题目
边栏推荐
猜你喜欢
随机推荐
聊聊云原生数据平台
本地导入不报错,服务器端报错 No module named xxx
雷达存在感应器技术,实时感知控制应用,雷达人体探测方案
Shanxi: 1 death occurred in a coal mine safety accidents was ordered to halt production
FTXUI按键和ROS2 CLI组合使用笔记(turtlesim+teleop)
glui.h无法找到描述+解决+测试
视频转gif怎样操作?1分钟在线视频转gif制作
HTTP学习——协议与术语、HTTP、缓存、Cookie
sprintboot验证码kaptcha 自定义图片样式
Gif动图如何快速制作?教你1分钟图片合成gif的方法
神经网络的图像识别技术,神经网络识别图像原理
注解和反射、持续
ahx文件转mav文件 工具分享及说明
requests库访问接口
LeetCode-1. Two Sum
异常处理的超详细讲解
植物肉,为何在中国没法“真香”?
分享几个自动化测试的练手项目
C专家编程 第10章 再论指针 10.3 在锯齿状数组上使用指针
v-show指令:切换元素的显示与隐藏









