代码随想录day44算法随想录|动态规划07

打家劫舍一

挺简单的,但为什么这道题不能把奇偶位的都提出来加一遍,直接max比较呢?

打家劫舍二

成环了,即首尾元素不能同时选1.在考虑首元素,不考虑尾元素的方式下算最大值;2.不考虑尾元素

最后两种情况中取一个值最大的

打家劫舍三

二叉树的交叉选取

如果直接回溯递归,一直实时计算,就容易超时,所以可以采用树形dp

cpp 复制代码
class Solution {
public:
    int rob(TreeNode* root) {
        vector<int> result = robTree(root);
        return max(result[0], result[1]);
    }
    // 长度为2的数组,0:不偷,1:偷
    vector<int> robTree(TreeNode* cur) {
        if (cur == NULL) return vector<int>{0, 0};
        vector<int> left = robTree(cur->left);
        vector<int> right = robTree(cur->right);
        // 偷cur,那么就不能偷左右节点。
        int val1 = cur->val + left[0] + right[0];
        // 不偷cur,那么可以偷也可以不偷左右节点,则取较大的情况
        int val2 = max(left[0], left[1]) + max(right[0], right[1]);
        return {val2, val1};
    }
};
相关推荐
闭着眼睛学算法28 分钟前
【双机位A卷】华为OD笔试之【模拟】双机位A-新学校选址【Py/Java/C++/C/JS/Go六种语言】【欧弟算法】全网注释最详细分类最全的华子OD真题题解
java·c语言·javascript·c++·python·算法·华为od
玉夏34 分钟前
【每日算法C#】爬楼梯问题 LeetCode
算法·leetcode·c#
学好statistics和DS38 分钟前
【CV】泊松图像融合
算法·计算机视觉
贝塔实验室39 分钟前
QPSK信号载波同步技术---极性Costas 法载波同步
计算机网络·算法·网络安全·数学建模·信息与通信·信号处理·傅立叶分析
前端小刘哥1 小时前
视频直播点播平台EasyDSS视频直播功能的技术实现与应用场景解析
算法
前端小刘哥1 小时前
企业运营效率瓶颈?新版视频直播点播平台EasyDSS用视频能力破局!
算法
曦樂~1 小时前
一些可用于排序的函数(2542. 最大子序列的分数)
算法
colus_SEU2 小时前
【编译原理笔记】2.1 Programming Language Basics
c++·算法·编译原理
人工智能培训2 小时前
大模型-去噪扩散概率模型(DDPM)采样算法详解
算法
Excuse_lighttime2 小时前
只出现一次的数字(位运算算法)
java·数据结构·算法·leetcode·eclipse