【代码随想录】刷题笔记Day47

前言

  • 又过了个愉快的周末~大组会终于不用开了,理论上已经可以回家了!但是我多留学校几天吧,回家实在太无聊了,也没太多学习的氛围

198. 打家劫舍 - 力扣(LeetCode)

  • dp[i]含义
    • 考虑下标i(包括i)以内的房屋,最多可以偷窃的金额为dp[i]
  • 递推公式:包含偷和不偷
    • dp[i] = max(dp[i - 2] + nums[i], dp[i - 1]);
  • 初始化
    • dp[0] = nums[0],dp[1] = max(nums[0], nums[1]);
  • 遍历顺序:类似斐波那契,从前往后推导
  • class Solution {
    public:
        int rob(vector<int>& nums) {  
            if(nums.size() == 1) return nums[0];
            vector<int> dp(nums.size());
            dp[0] = nums[0];
            dp[1] = max(nums[0], nums[1]);
            for(int i = 2; i < nums.size(); i++){
                dp[i] = max(dp[i - 2] + nums[i], dp[i - 1]);
            }
            return dp[nums.size() - 1];
        }
    };

213. 打家劫舍 II - 力扣(LeetCode)

  • 本题难点在于将环形问题拆解成线性问题,分为三种情况
  • 情况一:考虑不包含首尾元素
  • 情况二:考虑包含首元素,不包含尾元素
  • 情况三:考虑包含尾元素,不包含首元素 
  • 情况二、三是包含情况一的,所以把掐头去尾的数组传到上一题取最大值便可
  • // 方法一:传掐头去尾的数组
    class Solution {
    public:
        int rob(vector<int>& nums) {
            if (nums.size() == 0) return 0;
            if (nums.size() == 1) return nums[0];
            int result1 = robRange(nums, 0, nums.size() - 2); // 情况二
            int result2 = robRange(nums, 1, nums.size() - 1); // 情况三
            return max(result1, result2);
        }
        // 198.打家劫舍的逻辑
        int robRange(vector<int>& nums, int start, int end) {
            if (end == start) return nums[start];
            vector<int> dp(nums.size());
            dp[start] = nums[start];
            dp[start + 1] = max(nums[start], nums[start + 1]);
            for (int i = start + 2; i <= end; i++) {
                dp[i] = max(dp[i - 2] + nums[i], dp[i - 1]);
            }
            return dp[end];
        }
    };
  • 还有一个很妙的方法,遍历一次,同时更新两个dp数组(掐头 + 去尾)
  • class Solution {
    public:
        int rob(vector<int>& nums) {
            int n = nums.size();
            if(n == 1) return nums[0];
            vector<int> dp1(n), dp2(n);
            // 掐头,考虑1 ~ n-1,取n-1
            dp1[0] = 0;         
            dp1[1] = nums[1];
            // 去尾,考虑0 ~ n-2,取n-2
            dp2[0] = nums[0];
            dp2[1] = max(nums[0], nums[1]);
            for(int i = 2; i <= n - 1; i++){
                dp1[i] = max(dp1[i - 2] + nums[i], dp1[i - 1]);
                if(i <= n - 2){
                    dp2[i] = max(dp2[i - 2] + nums[i], dp2[i - 1]);
                }
            }
            return max(dp1[n - 1], dp2[n - 2]);
        }
    };

 337. 打家劫舍 III - 力扣(LeetCode)

  • 树形dp入门题目,记录每个节点偷和不偷的状态,递归后序遍历将最优解集中到根节点上
  • dp数组是一个长度为2的数组,在递归的过程中,系统栈会保存每一层递归的参数

  • 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* root){
            if(root == nullptr) return {0, 0};
            vector<int> left = robTree(root->left);
            vector<int> right = robTree(root->right);
            // 不偷cur,那么可以偷也可以不偷左右节点,则取较大的情况
            int val0 = max(left[0], left[1]) + max(right[0], right[1]);
            // 偷cur,那么就不能偷左右节点。
            int val1 = root->val + left[0] + right[0];
            return {val0, val1};
        }
    };

 后言

  • 下周考科二科三,这周得频繁去练车,争取每天早上刷题、下午练车,晚上干活!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/305061.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

密码学(二)

文章目录 前言一、Certificate Authorities二、Key Agreement Protocols 前言 本文来自 Intel SGX Explained 请参考&#xff1a;密码学&#xff08;一&#xff09; 一、Certificate Authorities 非对称密钥密码学中的公钥和私钥假设每个参与方都拥有其他参与方的正确公钥。…

【JAVA】final、finally、finalize 有什么区别?

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; JAVA ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 final&#xff1a; finally&#xff1a; finalize&#xff1a; 结语 我的其他博客 前言 在Java中&#xff0c;final、f…

对话北京菜百电子商务有限公司总经理张梦轩:品牌自播引领直播的时代即将来临

整理 | 飞族 编辑 | 渔舟 出品&#xff5c;极新&#xff06;北京电子商务协会 作为一种新型又高效的场域&#xff0c;在直播电商场景下&#xff0c;品牌通过尝试运用AI、VR、数字人等新技术&#xff0c;制作专业内容&#xff0c;去更好地吸引和打动消费者&#xff0c;促进业…

美信科技盘古信息智能车间项目成功验收,打造电子元器件数字化工厂标杆

作为一家深耕于磁性元器件领域近二十年的制造企业&#xff0c;广东美信科技股份有限公司&#xff08;以下简称“美信科技”&#xff09;始终秉承着“为电磁赋能&#xff0c;创工业至美”的企业使命&#xff0c;为中国制造卓越发展贡献力量。在当今数字化时代&#xff0c;制造企…

竞赛保研 基于深度学习的人脸识别系统

前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的人脸识别系统 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng-senior/…

导轨安装DIN12 IPO OC系列一路输入两路输出模拟信号隔离分配器4-20mA/0-5V/0-10V/0-20mA/0-±10mA/0-±20mA

概述 导轨安装DIN12 IPO OC系列模拟信号隔离放大器是一种将输入信号隔离放大、转换成按比例输出的直流信号混合集成厚模电路。产品广泛应用在电力、远程监控、仪器仪表、医疗设备、工业自控等需要直流信号隔离测控的行业。此系列产品内部采用了线性光电隔离技术相比电磁隔离具…

linux网络配置

一、查看Linux基础得网络设置 1.网关——route -n 2.IP地址——ifconfig 或 ip a ethtool -p ens33 让ens33网卡快速闪烁&#xff0c;分辨网线对应哪个网卡 3.DNS服务器——cat /etc/resolv.conf 4.主机名——hostname 5.路由——route 6.网络连接状态——ss 或 net…

python 多线程 守护线程

daemon线程&#xff1a;守护线程&#xff0c;优先级别最低&#xff0c;一般为其它线程提供服务。通常&#xff0c;daemon线程体是一个无限循环。如果所有的非daemon线程(主线程以及子线程&#xff09;都结束了&#xff0c;daemon线程自动就会终止。t.daemon 属性&#xff0c;设…

【STM32F103】RCC复位和时钟控制

前言 之前介绍外设的时候总是没有提到RCC&#xff0c;但其实我们使用STM32的外设之前都需要做的一步就是打开外设时钟。原本想着没什么可说的&#xff0c;就是用什么外设的时候就在开头加一行代码打开外设时钟就好了。直到最近写到了TIM定时器&#xff0c;我才开始觉得应该说一…

如何查询关键词的KD与搜索量

随着海外贸易的不断发展&#xff0c;越来越多的小伙伴们从事外贸行业&#xff0c;但是随着面对有限的市场和激烈的竞争&#xff0c;很多从业者往往流量的来源比较单一&#xff0c;那就是付费流量&#xff0c;包括谷歌ads&#xff0c;facebook等一些投流广告。广告的好处是当你付…

7.3 CONSTANT MEMORY AND CACHING

掩模数组M在卷积中的使用方式有三个有趣的属性。首先&#xff0c;M阵列的大小通常很小。大多数卷积掩模在每个维度上都少于10个元素。即使在3D卷积的情况下&#xff0c;掩码通常也只包含少于1000个元素。其次&#xff0c;在内核执行过程中&#xff0c;M的内容不会改变。第三&am…

基于Listener实现在线人数监测的简单案例

一、需求 只要有用户登录到服务器&#xff0c;就记录在线用户1。 二、使用到的Listner介绍 1、HttpSessionListener 监听器 当一个HttpSession刚被创建或者失效&#xff08;invalidate&#xff09;的时候&#xff0c;将会通知HttpSessionListener监听器。 方法声明功能介绍v…

目标检测-One Stage-YOLOv5

文章目录 前言一、YOLOv5的网络结构和流程YOLOv5的不同版本YOLOv5的流程YOLOv5s的网络结构图 二、YOLOv5的创新点1. 网络结构2. 输入数据处理3. 训练策略 总结 前言 前文目标检测-One Stage-YOLOv4提到YOLOv4主要是基于技巧的集成&#xff0c;对于算法落地具有重大意义&#x…

SpringIOC之support模块EmbeddedValueResolutionSupport

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

国货美妆未来发展方向在哪儿?媒介盒子分析

在消费结构升级&#xff0c;审美观念和悦己意识增强等多种因素的推动下&#xff0c;国内化妆品消费持续增长&#xff0c;那么国货美妆品牌在2024年的发展重心在哪儿&#xff1f;应该如何通过合适的营销提高品牌曝光&#xff0c;提高市场竞争力呢&#xff1f;接下来就让媒介盒子…

【liunx】线程池+单例模式+STL,智能指针和线程安全+其他常见的各种锁+读者写者问题

线程池单例模式STL,智能指针和线程安全其他常见的各种锁读者写者问题 1.线程池2.线程安全的单例模式3.STL,智能指针和线程安全4.其他常见的各种锁4.读者写者问题 喜欢的点赞&#xff0c;收藏&#xff0c;关注一下把&#xff01; 1.线程池 目前我们学了挂起等待锁、条件变量、信…

一氧化碳中毒悲剧频发:探究道合顺电化学传感器促进家庭取暖安全

1月6日&#xff0c;陕西省榆林市发生了一起疑似因使用煤炭炉取暖中毒事件。通报称&#xff0c;经公安部门现场调查&#xff0c;并结合医院救治情况&#xff0c;初步判断5人属一氧化碳中毒&#xff0c;其中4人抢救无效死亡&#xff0c;令人痛心。 一般来说&#xff0c;这种在日…

如何在企业中实施自适应人工智能?

人工智能不再是企业的选择。很快&#xff0c;它也将不再是一个区分因素。商业中的适应性人工智能正在改变格局。根据最近的统计数据&#xff0c;95%的企业以上都在追求人工智能。 因此&#xff0c;为了确保你拥有竞争优势&#xff0c;你必须期待先进的人工智能选项。适应性就是…

如何使用内网穿透实现iStoreOS软路由公网远程访问局域网电脑桌面

文章目录 简介一、配置远程桌面公网地址二、家中使用永久固定地址 访问公司电脑**具体操作方法是&#xff1a;** 简介 软路由是PC的硬件加上路由系统来实现路由器的功能&#xff0c;也可以说是使用软件达成路由功能的路由器。 使用软路由控制局域网内计算机的好处&#xff1a…

Elasticsearch基本操作之文档操作

本文来说下Elasticsearch基本操作之文档操作 文章目录 文档概述创建文档示例创建文档(生成随机id)创建文档(自定义唯一性标识) 查看文档示例根据主键查看文档查看所有文档 修改文档示例全局修改文档局部修改文档 删除文档示例根据文档的唯一性标识删除文档条件删除文档 本文小结…