2023-09-18 LeetCode每日一题(打家劫舍 III)

2023-09-18每日一题

一、题目编号

337. 打家劫舍 III

二、题目链接

点击跳转到题目位置

三、题目描述

小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为 root 。

除了 root 之外,每栋房子有且只有一个"父"房子与之相连。一番侦察之后,聪明的小偷意识到"这个地方的所有房屋的排列类似于一棵二叉树"。 如果 两个直接相连的房子在同一天晚上被打劫 ,房屋将自动报警。

给定二叉树的 root 。返回 在不触动警报的情况下 ,小偷能够盗取的最高金额 。

示例 1:

示例 2:

提示:

  • 树的节点数在 [1, 10^4^] 范围内
  • 0 <= Node.val <= 10^4^

四、解题代码

cpp 复制代码
class Solution {
public:
    unordered_map <TreeNode*, int> f, g;

    void dfs(TreeNode* node) {
        if (!node) {
            return;
        }
        dfs(node->left);
        dfs(node->right);
        f[node] = node->val + g[node->left] + g[node->right];
        g[node] = max(f[node->left], g[node->left]) + max(f[node->right], g[node->right]);
    }

    int rob(TreeNode* root) {
        dfs(root);
        return max(f[root], g[root]);
    }
};

五、解题思路

(1) 树型dp题目

相关推荐
徐浪老师2 小时前
深入解析贪心算法及其应用实例
算法·贪心算法
软行2 小时前
LeetCode 单调栈 下一个更大元素 I
c语言·数据结构·算法·leetcode
钰爱&3 小时前
【操作系统】Linux之线程同步二(头歌作业)
linux·运维·算法
拒绝头秃从我做起3 小时前
14.最长公共前缀-力扣(LeetCode)
leetcode
Ws_3 小时前
leetcode LCR 068 搜索插入位置
数据结构·python·算法·leetcode
灼华十一3 小时前
数据结构-布隆过滤器和可逆布隆过滤器
数据结构·算法·golang
adam_life4 小时前
OpenJudge_ 简单英文题_04:0/1 Knapsack
算法·动态规划
龙的爹23335 小时前
论文翻译 | The Capacity for Moral Self-Correction in Large Language Models
人工智能·深度学习·算法·机器学习·语言模型·自然语言处理·prompt
鸣弦artha6 小时前
蓝桥杯——杨辉三角
java·算法·蓝桥杯·eclipse
我是聪明的懒大王懒洋洋6 小时前
力扣力扣力:动态规划入门(1)
算法·leetcode·动态规划