【代码随想录_Day23】122. 买卖股票的最佳时机 II 55. 跳跃游戏 45.跳跃游戏II 1005.K次取反后最大化的数组和

Day23 OK,今日份的打卡!第二十三天

  • 以下是今日份的总结
    • 买卖股票的最佳时机 II
    • 跳跃游戏
    • 跳跃游戏II
    • K次取反后最大化的数组和

以下是今日份的总结

122 买卖股票的最佳时机 II
55 跳跃游戏
45 跳跃游戏II
1005 K次取反后最大化的数组和

今天的题目难度不低,尽量还是写一些简洁代码 ^ _ ^

买卖股票的最佳时机 II

思路:

算出每一天的差值,然后计算所有正值的和,不计算亏损

值得注意的是

局部最优:收集每天的正利润
全局最优:求得最大利润。

    int maxProfit(vector<int>& prices) {int res = 0;for (int i = 1; i < prices.size(); i++) {res += max(prices[i] - prices[i - 1],0);}return res;}

跳跃游戏

思路:

局部最优解:每次取最大跳跃步数(取最大覆盖范围)
整体最优解:最后得到整体最大覆盖范围,看是否能到终点。

值得注意的是

因为元素值是最大跳跃步数,所以可以在范围内跳任意步数

       bool canJump(vector<int>& nums) {int cover = 0;if (nums.size() == 1)return true; // 只有一个元素,就是能达到for (int i = 0; i <= cover; i++) { // 注意这里是小于等于covercover = max(i + nums[i], cover);if (cover >= nums.size() - 1)return true; // 说明可以覆盖到终点了}return false;}

跳跃游戏II

思路:

从覆盖范围出发,不管怎么跳,覆盖范围内一定是可以跳到的,以最小的步数增加覆盖范围,覆盖范围一旦覆盖了终点,得到的就是最少步数

值得注意的是

需要统计两个覆盖范围,当前这一步的最大覆盖和下一步最大覆盖

    int jump(vector<int>& nums) {int curDistance = 0;  // 当前覆盖的最远距离下标int ans = 0;          // 记录走的最大步数int nextDistance = 0; // 下一步覆盖的最远距离下标for (int i = 0; i < nums.size() - 1;i++) { // 注意这里是小于nums.size() - 1,这是关键所在nextDistance =max(nums[i] + i, nextDistance); // 更新下一步覆盖的最远距离下标if (i == curDistance) { // 遇到当前覆盖的最远距离下标curDistance = nextDistance; // 更新当前覆盖的最远距离下标ans++;if (nextDistance >= nums.size() - 1)break; // 当前覆盖最远距到达集合终点,不用做ans++操作了,直接结束}}return ans;}

K次取反后最大化的数组和

思路:

第一步:将数组按照绝对值大小从小到大排序,注意要按照绝对值的大小
第二步:从前向后遍历,遇到负数将其变为正数,同时K–
第三步:如果K还大于0,那么反复转变数值最小的元素,将K用完
第四步:求和

值得注意的是

贪心第一次
局部最优:让绝对值大的负数变为正数,当前数值达到最大
整体最优:整个数组和达到最大。
再贪一次
局部最优:只找数值最小的正整数进行反转,当前数值和可以达到最大
全局最优:整个 数组和 达到最大。

    int largestSumAfterKNegations(vector<int>& nums, int k) {int res = 0;//排序,假设将最小的负数放在数组最前面sort(nums.begin(), nums.end());for (int i = 0; i < nums.size(); i++) {//尽可能的处理数组中的负数if (nums[i] < 0 && k > 0) {nums[i] = -nums[i];k--;}}//全是正数,在此调整排序,k有余是单数,则将开头的数字负数化        if (k % 2 != 0) {sort(nums.begin(), nums.end());nums[0] = -nums[0];}for (int i : nums) {res += i;}return res;}

两次排序太罗嗦了,优化一下

   static bool cmp(int a, int b) { return abs(a) < abs(b); }int largestSumAfterKNegations(vector<int>& nums, int k) {int res = 0;//按绝对值排序,解决两次排序的问题sort(nums.begin(), nums.end(), cmp);for (int i = nums.size() - 1; i >= 0; i--) {if (nums[i] < 0 && k > 0) {nums[i] = -nums[i];k--;}}if (k % 2 == 1) {nums[0] = -nums[0];//最小值取负}for (int i : nums) {res += i;}return res;}

写在最后

----OK,今日份的博客就写到这里,这一期的贪心算法好难想,明天继续加油!!!
—还没看下期的题,但是我的栈还有一节没写;
–追上时间进度了吗?如追,从欠两天变成欠一天!!(笑
-月亮在走,太阳在跑,时间在睡觉,机会不会等我。

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

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

相关文章

MySQL实战-4 | 深入浅出索引(上)(下)

什么是数据库索引&#xff0c;索引又是如何工作的呢&#xff1f; 一句话简单来说&#xff0c;索引的出现其实就是为了提高数据查询的效率&#xff0c;就像书的目录一样。一本 500 页的书&#xff0c;如果你想快速找到其中的某一个知识点&#xff0c;在不借助目录的情况下&…

【AI工具】-GPU算力租赁平台介绍

目录 1. AWS&#xff08;亚马逊云服务&#xff09; 2. Google Cloud Platform (GCP) 3. Microsoft Azure 4. 阿里云 5. 腾讯云 6. 派欧算力云&#xff08;PPIO&#xff09; 7. Lambda Labs 8. 猿界算力 9. AutoDL算力云&#xff08;视拓云&#xff09; 10. 极链AI云 …

试用笔记之-免费的汇通餐饮管理软件

首先下载免费的汇通餐饮管理软件&#xff1a; http://www.htsoft.com.cn/download/htcanyin.exe 安装后的图标 登录软件&#xff0c;默认没有密码 汇通餐饮管理软件主界面 汇通餐饮软件前台系统 点菜

使用 Java Swing 和 XChart 创建多种图表

在现代应用程序开发中&#xff0c;数据可视化是一个关键部分。本文将介绍如何使用 Java Swing 和 XChart 库创建各种类型的图表。XChart 是一个轻量级的图表库&#xff0c;支持多种类型的图表&#xff0c;非常适合在 Java 应用中进行快速的图表绘制。 1、环境配置 在开始之前&…

关于正负样本不均衡对树模型feature importance的影响

正负样本不平衡确实可能会影响决策树模型&#xff08;包括随机森林和梯度提升树等树模型&#xff09;中的特征重要性评估。这是因为特征重要性的计算通常基于模型内部节点分裂所带来的信息增益或基尼不纯度减少。 在不平衡的数据集中&#xff0c;模型可能会偏向于频繁选择那些…

PSINS中,avp的解读

PSINS中的AVP PSINS工具箱里面的trj.avp、trj.avp0等中的avp指的是姿态&#xff08;attitude&#xff09;、速度&#xff08;velocity&#xff09;和位置&#xff08;position&#xff09;&#xff0c;最后加一个时间戳t&#xff1a; avp[att; vn; pos; t]。 姿态 姿态的构成…

imx6ull/linux应用编程学习(7)在LCD上显示文字

在linux中&#xff0c;确实可以像裸机一样自己取模、自己写函数打点显示&#xff0c;但是效率很低&#xff0c;不能满足多文字显示&#xff0c;在Linux 系统中&#xff0c; 字体文件通常会放在/usr/share/fonts 目录下&#xff0c;有了字体文件之后&#xff0c;我们就不需要再对…

X86 +PC104+支持WinCE5.0,WinCE6.0,DOS,WinXP, QNX等操作系统,工业控制数据采集核心模块板卡定制

CPU 模块 是一款基于RDC 3306的SOM Express模块。RDC 3306这款X86架构的CPU是一款性能高、稳定性强的处理器。 它是一款灵活精巧的主板&#xff08;尺寸为91.8mm68.6mm&#xff09;&#xff0c;可以灵活的运用于用户的底板&#xff0c;节约开发成本。模块的接插件使用插针形式…

人工智能在音乐创作中的双刃剑:创新与挑战

AI在创造还是毁掉音乐&#xff1f; 简介 最近一个月&#xff0c;轮番上线的音乐大模型&#xff0c;一举将素人生产音乐的门槛降到了最低&#xff0c;并掀起了音乐圈会不会被AI彻底颠覆的讨论。短暂的兴奋后&#xff0c;AI产品的版权归属于谁&#xff0c;创意产业要如何在AI的阴…

pom文件-微服务项目结构

一、微服务项目结构 my-microservices-project/ ├── pom.xml <!-- 父模块的pom.xml --> ├── ry-system/ │ ├── pom.xml <!-- 子模块ry-system的pom.xml --> │ └── src/main/java/com/example/rysystem/ │ └── RySystemApplication.…

数据类型

数据类型 注意&#xff1a;每个字段都必须设置数据类型 整数类型 tinyint - 1字节 - 应用场景&#xff1a;存储状态码 int - 4字节 - 应用场景&#xff1a;没有特殊要求&#xff0c;一般使用int bigint - 8字节 - 应用场景&#xff1a;存储极大的整数 CREATE TABLE user (use…

Elasticsearch8.x Spring Data and Spring Boot 3 尝鲜

在本教程中,我们将通过实际操作和实用的方式,探索使用 Spring Boot 进行 Elasticsearch 的基础知识。我们将学习如何使用 Spring Data Elasticsearch 模块创建索引、进行 CRUD 操作、搜索和查询 Elasticsearch 文档。我们还将看看如何在我们的 Spring 应用程序中记录 Elastic…

全网最全的TTS模型汇总,电商人、自媒体人狂喜

近日TTS语音模型在AI圈内热度不小&#xff0c;今天小编就来给大家做了个TTS模型汇总&#xff01; GPT-SoVITS&#xff08;AI 卖货主播大模型Streamer-Sales销冠用的TTS模型&#xff09; 模型简介&#xff1a;支持英语、日语和中文&#xff0c;零样本文本到语音&#xff08;TT…

【INTEL(ALTERA)】Nios II软件开发人员手册中设计位置的错误示例

目录 说明 解决方法 说明 Nios II软件开发人员手册正确无误 请参阅 Nios 中包含的Nios II硬件设计示例 II 嵌入式设计套件 &#xff08;EDS&#xff09;。提供设计示例 设计上 Altera网站的示例页面。 Nios II软件开发人员手册正确无误 请参阅 创建本应用程序和创建本 bsp …

Python UUID模块:深入理解与使用技巧

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

Atom CMS v2.0 SQL 注入漏洞(CVE-2022-25488)

前言 CVE-2022-25488 是一个发现于 Telesquare SDT-CW3B1 设备中的命令注入漏洞。这一漏洞可以被未经认证的远程攻击者利用&#xff0c;通过特殊构造的 HTTP 请求在设备上执行任意命令。以下是关于该漏洞的详细信息&#xff1a; 漏洞详细信息 漏洞编号: CVE-2022-25488影响范…

沃尔核材:价值重估

当英伟达这个曾经的GPU行业龙头&#xff0c;伴随AI的发展成为AI芯片架构的供应商时&#xff0c;他就跳出了原本行业的竞争格局&#xff0c;曾经还能与之一战的超威半导体被远远甩在身后&#xff0c;成为宇宙第一公司。 这说的就是一家公司价值的重估。今天给大家聊的也是这样一…

LIMS系统在汽车行业中的应用有哪些优势

LIMS实验室管理系统在汽车行业中的应用有诸多优势&#xff0c;这些优势不仅提升了实验室的管理效率&#xff0c;还确保了数据的准确性和可靠性&#xff0c;进而促进了汽车行业的整体发展。 一、提升管理效率 自动化数据处理 LIMS系统能够自动化处理大量数据&#xff0c;显著减…

Python层次密度聚类算法库之HDBSCAN使用详解

概要 HDBSCAN 是一种层次密度聚类算法,它通过密度连接性来构建聚类层次结构。与传统的 K-Means 算法相比,HDBSCAN 具有以下几个显著特点: 自动确定聚类数量:HDBSCAN 能够根据数据自动确定聚类数量,不需要预先指定。 适应噪声和异常点:HDBSCAN 在聚类过程中能够很好地处理…