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

代码随想录算法训练营第三十九天-动态规划-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.kler.cn/a/525866.html

相关文章:

  • < OS 有关 > Android 手机 SSH 客户端 app: connectBot
  • Java实现.env文件读取敏感数据
  • 【Rust自学】14.6. 安装二进制crate
  • CMAKE工程编译好后自动把可执行文件传输到远程开发板
  • LeetCode热题100中 17. 20. 53. 78. 215.
  • PostgreSQL 约束
  • 批量解密,再也没有任何限制了
  • 【逻辑学导论】1.4论证与说明
  • AI领域的技术评估与地缘政治困境 ——评析Anthropic CEO关于DeepSeek的矛盾论述
  • 【测试】开发模型和测试模型
  • C++,STL 头文件组织:结构、分类与最佳实践
  • 【BUUCTF】[GXYCTF2019]BabysqliV3.01
  • 【MySQL】我在广州学Mysql 系列——MySQL用户管理示例
  • 级数论存在重大错误的原因:中学数学对无穷数列的认识存在重大错误
  • android获取EditText内容,TextWatcher按条件触发
  • 图论——floyd算法
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.23 数据工厂:高级初始化模式解析
  • 【letta】The Letta Platform LETTA平台
  • 脚本运行禁止:npx 无法加载文件,因为在此系统上禁止运行脚本
  • 71-《颠茄》
  • 知识库管理系统助力企业实现知识共享与创新价值的转型之道
  • Rust语言进阶之filter用法实例(九十四)
  • 青少年编程与数学 02-008 Pyhon语言编程基础 06课题、字符串
  • SpringBoot 日志与配置文件
  • 智能家居环境监测系统设计(论文+源码)
  • 【Pandas】pandas Series cumprod