代码随想录二刷 Day50

news2024/9/24 7:24:07

198.打家劫舍 

这个题一开始由于给出来的例子陷入了思维误区,以为结果就是每隔一个取一个,其实有可能中间隔很多个。比如一下这个例子

下面这种写法不对。

class Solution {
public:
    int rob(vector<int>& nums) {
        int odd_sum = 0;
        int even_sum = 0;
        for( int i = 0; i < nums.size(); i = i + 2){
            odd_sum += nums[i];
        }

         for( int j = 1; j < nums.size(); j = j + 2){
            even_sum += nums[j];
        }
         return max(odd_sum, even_sum);
    }
};

下面这种动态规划才能做出来;

class Solution {
public:
    int rob(vector<int>& nums) {
        if (nums.size() == 0) return 0;
        if (nums.size() == 1) return nums[0];
        vector<int> dp(nums.size() + 1, 0); //dp[i]:考虑下标i(包括i)以内的房屋,最多可以偷窃的金额为dp[i]。
        dp[0] = nums[0];
        dp[1] = max (nums[0], nums[1]);
        for (int i = 2; i < nums.size(); i++) {
            dp[i] = max(dp[i - 1], dp[i - 2] + nums[i]);
        }
        return dp[nums.size() - 1];
    }
};

213.打家劫舍II

情况二就是假设不存在最后一个元素来求最大可以偷的, 情况上就是假设不存在第一个元素来求最大可以偷的,具体情况二选不选择首元素这个要看递推公式来决定;

class Solution {
public:
    int rob(vector<int>& nums) {
        if (nums.size() == 0) return 0;
        if (nums.size() == 1) return nums[0];
        int result_1 = robRange(nums, 0, nums.size() - 2);
        int result_2 = robRange(nums, 1, nums.size() - 1);
        return max(result_1, result_2);
    }

    int robRange(vector<int>& nums, int start, int end) {
        if (end == start) return nums[start];  //这行不写会报错越界之类的
        vector<int> dp(nums.size(), 0);
        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];
    }
};

337.打家劫舍 III

树形dp,后序遍历。挺难的做不出; dp的含义是dp[0]是不屈这个current的最大值,dp[1]是取这哦current的最大值

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.coloradmin.cn/o/1134306.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

10月最新H5自适应樱花导航网站源码SEO增强版

10月最新H5自适应樱花导航网源码SEO增强版。非常强大的导航网站亮点就是对SEO优化比较好。 开发时PHP版本&#xff1a;7.3开发时MySQL版本&#xff1a;5.7.26 懂前端和PHP技术想更改前端页面的可以看&#xff1a;网站的前端页面不好看&#xff0c;你可以查看index目录&#x…

“人类高质量数据”如何训练计算机视觉模型?

人类的视觉系统可以复制吗&#xff1f; 答案是肯定的。 计算机视觉 (Computer Vision) 技术的不断普及&#xff0c;让机器识别和处理图像就像人的大脑一样&#xff0c;且速度更快、更准确。 机器像人类一样去“思考” 计算机视觉 (Computer Vision) 是近年来人工智能增长最快…

Linux网络编程:IP协议

目录 一. IP协议的功能 二. IP协议报头 2.1 IP报头的格式 2.2 IP报头各部分含义 三. IP报文的分片问题 3.1 什么是分片 3.2 分片的原理 3.3 合并报文 四. 网段划分 4.1 网络号和主机号 4.2 网络号和主机号的划分策略 4.3 特殊的IP地址 4.4 IP地址数量不足问题 五.…

最新SQL注入漏洞修复建议

点击星标&#xff0c;即时接收最新推文 本文选自《web安全攻防渗透测试实战指南&#xff08;第2版&#xff09;》 点击图片五折购书 SQL注入漏洞修复建议 常用的SQL注入漏洞的修复方法有两种。 1&#xff0e;过滤危险字符 多数CMS都采用过滤危险字符的方式&#xff0c;例如&…

Kotlin中使用ViewBinding绑定控件并添加点击事件

文章目录 效果1、加入依赖2、与控件进行绑定在 Activity 中使用视图绑定 3、监听控件 效果 实现源码 class MainActivity : AppCompatActivity() {lateinit var binding:ActivityMainBindingoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstan…

[GXYCTF2019]Ping Ping Ping 1

题目环境 给了一个ip参数 注意题目Ping Ping Ping 意思就是让我们进行Ping地址 随便输入一个地址Ping一下 URL?ip0 有回显结果&#xff0c;和上题类似 [ACTF2020 新生赛]Exec 1-CSDN博客 查看当前目录文件URL?ip0;ls&#xff08;这里使用堆叠注入查询&#xff09;直接给出了咱…

第10期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练 Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大型语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以…

原来服务器这么有用-Docker安装

原来服务器这么有用-Docker安装 1. 前言 在此之前青阳通过各种方式介绍过自己通过服务器搭建的一些玩法&#xff0c;也写过一些教程&#xff0c;但是那些教程&#xff0c;现在回头来看&#xff0c;都是有些杂乱了&#xff0c;统一性不强。我就准备重新整理一下之前写的文章&a…

基于单片机16位智能抢答器设计

**单片机设计介绍&#xff0c;1645【毕设课设】基于单片机16位智能抢答器设计&#xff08;裁判功能、LCD数码管显示&#xff09;汇编 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序程序文档 六、 文章目录 一 概要 基于单片机16位智能抢答器设计&#x…

Go学习第八章——面向“对象”编程(入门——结构体与方法)

Go面向“对象”编程&#xff08;入门——结构体与方法&#xff09; 1 结构体1.1 快速入门1.2 内存解析1.3 创建结构体四种方法1.4 注意事项和使用细节 2 方法2.1 方法的声明和调用2.2 快速入门案例2.3 调用机制和传参原理2.4 注意事项和细节2.5 方法和函数区别 3 工厂模式 Gola…

【C++】初阶模板

泛型编程 如何实现一个通用的交换函数呢&#xff1f; void Swap(int& left, int& right) {int temp left;left right;right temp; } void Swap(double& left, double& right) {double temp left;left right;right temp; } void Swap(char& left, c…

【Java集合类面试二十四】、ArrayList和LinkedList有什么区别?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;ArrayList和LinkedList有…

I/O控制方式(程序直接控制方式,中断驱动方式,DMA方式,通道控制方式)

文章目录 1.程序直接控制方式1.完成一次读/写操作的流程&#xff08;以读操作为例)2.CPU干预的频率3.数据传送的单位4.数据的流向5.主要缺点和优点 2.中断驱动方式1.注意2.CPU千预的频率3.数据传送的单位4.数据的流向5.主要缺点和主要优点 3.DMA方式1. 主要特点2.DMA控制器3.CP…

C++(Qt)软件调试---线程死锁调试(15)

C(Qt)软件调试—线程死锁调试&#xff08;15&#xff09; 文章目录 C(Qt)软件调试---线程死锁调试&#xff08;15&#xff09;1、前言2、常见死锁3、linux下gdb调试C死锁1.1 使用代码1.2 gdb调试 3、linux下gdb调试Qt死锁1.1 使用代码1.2 gdb调试 4、Windows下gdb调试C死锁5、W…

探索大模型技术在运维方向的应用前景

OpenAI 在 2022 年 11 月发布了对话型大语言模型 ChatGPT&#xff0c;提供了高度智能化的人机交互体验和极富创造力的内容生成能力&#xff0c;模型一经发布&#xff0c;就得到全世界的广泛关注。在 ChatGPT 火爆以后&#xff0c;中国科技企业纷纷投入大模型的相关工作&#xf…

Java操作Excel

一、Java操作Excel 二、Excel根据单元格状态自动变更行背景颜色 用excel记录和跟进工作的时候&#xff0c;设置背景颜色&#xff0c;以此让记录更加突出&#xff0c;方便查看&#xff0c;但是手动修改背景颜色一来麻烦容易漏&#xff0c;也可能颜色不统一&#xff0c;我们可以试…

【数据结构】优先级队列

⭐ 作者&#xff1a;小胡_不糊涂 &#x1f331; 作者主页&#xff1a;小胡_不糊涂的个人主页 &#x1f4c0; 收录专栏&#xff1a;浅谈数据结构 &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; PriorityQueue 1. 什么是优先级队列…

热搜榜:最热门的话题文本排行榜API接口

近年来&#xff0c;随着社交媒体的兴起&#xff0c;热门话题的数量和更新速度都在不断增加&#xff0c;因此热门话题排行榜的需求也越来越大。在这篇文章中&#xff0c;我们将探讨如何使用#热搜榜# API接口获取最热门的话题文本排行榜&#xff0c;并给出相关代码示例。 一、API…

案例分析背诵点

案例分析背诵点 信息系统架构的设计理论与实践 信息系统架构的定义 软件或计算机系统的信息系统架构是该系统的一个&#xff08;或多个&#xff09;结构&#xff0c;而结构由软件元素&#xff0c;元素的外部可见属性及它们之间的关系组成。 信息系统架构的分类 按照信息系…

SAP ABAP 报表输出成 excel 统计图形 (RFC : GFW_PRES_SHOW_MULT)

SAP 预设了一个类型组 GFW &#xff0c;做简单的excel图形输出 话不多说&#xff0c;直接上代码&#xff1a; *&---------------------------------------------------------------------* *& Report ZCYCLE057 *&----------------------------------------------…