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

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

打家劫舍一

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

打家劫舍二

成环了,即首尾元素不能同时选1.在考虑首元素,不考虑尾元素的方式下算最大值;2.不考虑尾元素
最后两种情况中取一个值最大的

打家劫舍三

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

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};
    }
};

http://www.kler.cn/a/404736.html

相关文章:

  • uniapp input限制输入负数,以及保留小数点两位.
  • Lucene(2):Springboot整合全文检索引擎TermInSetQuery应用实例附源码
  • 贴代码框架PasteForm特性介绍之image
  • 计算机网络(12)介质访问控制
  • 音视频pts/dts
  • vue3:使用插件递归组件
  • B/S架构(笔记整理)
  • 【jvm】StringTable为什么要调整
  • SpringBoot中设置超时30分钟自动删除元素的List和Map
  • 内存、显存和GPU在Transformer架构中承担什么计算任务
  • 【如何用更少的数据作出更好的决策】-gpt生成
  • 华为云容器监控平台
  • 【面试题系列Vue07】Vuex是什么?使用Vuex的好处有哪些?
  • 快速排序-java版本
  • 【开源免费】基于Vue和SpringBoot的私人健身与教练预约管理系统(附论文)
  • WTV芯片在智能电子锁语音留言上的应用方案解析
  • 用Python做一个websocket服务端
  • Nvidia 系列显卡大解析 B100、A40、A100、A800、H100、H800、V100 该如何选择,各自的配置详细与架构详细介绍,分别运用于哪些项目场景
  • VMware如何安装img镜像,VMware如何安装openwrt软路由(含相关工具镜像)
  • OceanBase 中常用的查询语句
  • Linux Xterm字体修改
  • IDEA一键启动多个微服务
  • 汽车资讯新视角:Spring Boot技术革新
  • Android 日常使用整理
  • 详解php://filter--理论
  • vue3的attr透传属性详解和使用法方式。以及在css样式的伪元素中实现