当前位置: 首页 > news >正文

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

  • 老师讲这是树形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.lryc.cn/news/529367.html

相关文章:

  • Java线程认识和Object的一些方法
  • 【算法应用】基于A*-蚁群算法求解无人机城市多任务点配送路径问题
  • 电梯系统的UML文档14
  • 一种用于低成本水质监测的软传感器开源方法:以硝酸盐(NO3⁻)浓度为例
  • [250130] VirtualBox 7.1.6 维护版本发布 | Anthropic API 推出全新引用功能
  • JVM_类的加载、链接、初始化、卸载、主动使用、被动使用
  • 2025最新版MySQL安装使用指南
  • MIMIC IV数据库中mimiciv_hosp的transfers表的careunit分析
  • AI学习指南HuggingFace篇-Hugging Face 的环境搭建
  • 白嫖DeepSeek:一分钟完成本地部署AI
  • C# dataGridView1获取选中行的名字
  • Day28(补)-【AI思考】-AI会不会考虑自己的需求?
  • 幸运数字——蓝桥杯
  • 快速提升网站收录:避免常见SEO误区
  • [Java]泛型(二)泛型方法
  • 如何监控ubuntu系统某个程序的运行状态,如果程序出现异常,对其自动重启。
  • UE学习日志#15 C++笔记#1 基础复习
  • CSS:跑马灯
  • rust 自定义错误(十二)
  • EWM 变更库存类型
  • AI大模型开发原理篇-9:GPT模型的概念和基本结构
  • MySQL数据库(二)
  • 从0到1:C++ 开启游戏开发奇幻之旅(二)
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.18 逻辑运算引擎:数组条件判断的智能法则
  • EasyExcel写入和读取多个sheet
  • LLM架构与优化:从理论到实践的关键技术
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.22 形状操控者:转置与轴交换的奥秘
  • NLP模型大对比:Transformer >Seq2Seq > LSTM > RNN > n-gram
  • DeepSeek部署教程(基于Ollama)
  • Java基础面试题总结(题目来源JavaGuide)