代码随想录算法训练营第三十九天-动态规划-337. 打家劫舍 III

ops/2025/1/31 17:32:08/
  • 老师讲这是树形dp的入门题目
  • 解题思路是以二叉树的遍历(递归三部曲)再结合动规五部曲
  • dp数组如何定义:只需要定义一个二个元素的数组,dp[0]dp[1]
    • dp[0]表示不偷当前节点的最大价值
    • dp[1]表示偷当前节点后的最大价值
    • 这样可以把每个节点的状态值都表示出来
    • 但这个数组的两个值只表示当前节点的状态值
  • 递归时要使用后序遍历:
    • 使用后序遍历的原因就是要从叶子结点一层一层向上统计出来
/*** Definition for a binary tree node.* 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 {
private:int* binaryTreeRob(TreeNode* node) {if (node == nullptr) {return new int[2] {0, 0};}int* parr = new int[2] {0, 0};int* p_left = binaryTreeRob(node->left);int* p_right = binaryTreeRob(node->right);parr[1] = node->val + p_left[0] + p_right[0];parr[0] = std::max(p_left[0], p_left[1]) + std::max(p_right[0], p_right[1]);return parr;}
public:int rob(TreeNode* root) {int* arr = binaryTreeRob(root);return std::max(arr[0], arr[1]);}
};
  • 这种题能有这种解法,非常敬佩
  • 汇总

http://www.ppmy.cn/ops/154533.html

相关文章

一种用于低成本水质监测的软传感器开源方法:以硝酸盐(NO3⁻)浓度为例

论文标题 A Soft Sensor Open-Source Methodology for Inexpensive Monitoring of Water Quality: A Case Study of NO3− Concentrations 作者信息 Antonio Jess Chaves, ITIS Software, University of Mlaga, 29071 Mlaga, Spain Cristian Martn, ITIS Software, Universi…

论文阅读(九):通过概率图模型建立连锁不平衡模型和进行关联研究:最新进展访问之旅

1.论文链接:Modeling Linkage Disequilibrium and Performing Association Studies through Probabilistic Graphical Models: a Visiting Tour of Recent Advances 摘要: 本章对概率图模型(PGMs)的最新进展进行了深入的回顾&…

基于物联网的火灾报警器设计与实现(论文+源码)

1 总体方案设计 本次基于物联网的火灾报警器,其系统总体架构如图2.1所示,采用STM32f103单片机作为控制器,通过DS18B20传感器实现温度检测;通过MQ-2烟雾传感器实现烟雾检测;.通过火焰传感器实现火焰检测,当…

绘制决策树的尝试1

代码复制 import pydotplus 复制 - 这一行代码用于导入pydotplus模块,这是一个用来在Python中创建图形的工具。2. python from IPython.display import Image 这一行代码用于从IPython显示模块中导入Image类,它允许我们在Jupyter笔记本中显示图像。…

Docker 在Linux 系统中的使用说明

目录 一:Docker 容器介绍1、容器技术的发展2、容器的关键技术3、Docker 发展历程4、容器的运行效率 二:Docker 安装方式1、在线安装 Docker2、离线安装 Docker 二:Docker 数据目录1、数据存储路径2、子目录的作用 三:Docker 配置文…

LitGPT - 20多个高性能LLM,具有预训练、微调和大规模部署的recipes

文章目录 一、关于 LitGPT二、快速启动安装LitGPT高级安装选项 从20多个LLM中进行选择 三、工作流程1、所有工作流程2、微调LLM3、部署LLM4、评估LLM5、测试LLM6、预训练LLM7、继续预训练LLM 四、最先进的功能五、训练方法示例 六、项目亮点教程 一、关于 LitGPT LitGPT 用于 …

[NOIP2007]矩阵取数游戏

点我写题 题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数。游戏规则如下: 1.每次取数时须从每行各取走一个元素,共n个。m次后取完矩阵所有元素; 2.每次取走的…

嵌入式知识点总结 Linux驱动 (六)-linux驱动模型 字符 块 网络驱动 总线驱动 framebuffer汇总

针对于嵌入式软件杂乱的知识点总结起来,提供给读者学习复习对下述内容的强化。 目录 1.字符设备 块设备 网络设备的区别并分别举例? 2.LCD驱动模型 3.总线驱动模型 4.输入子系统模型 5.总线模型匹配规则 6.framebuffer机制? 1.字符设备 块设备 网络设备的区…