day.26贪心算法2

server/2024/9/24 11:26:32/

122.买卖股票的最佳时机

给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。

在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。

返回 你能获得的 最大 利润 。

 思路: 最大利润2虽然是中等题,但并不难,就是局部最优推出整体最优,当后一天的价格大于前一天时,就将其卖出记录利润,此时就是把利润分解为每天为单位的维度,而不是从 0 天到第 3 天整体去考虑

假如第 0 天买入,第 3 天卖出,那么利润为:prices[3] - prices[0]。

相当于(prices[3] - prices[2]) + (prices[2] - prices[1]) + (prices[1] - prices[0])。

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

class Solution {
public:int maxProfit(vector<int>& prices) {int money=0;for(int i=1;i<prices.size();i++){if(prices[i]-prices[i-1]>0){money+=prices[i]-prices[i-1];}}return money;}
};

55.跳跃游戏:

给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。

判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。

 思路:定义一个变量,局部最优是尽可能覆盖较大的值,全局最优是得到整体覆盖的最大范围,看看能否达到最优解。想要取最大范围,就要取max(该元素数值补充后的范围, cover 本身范围)。

class Solution {
public:bool canJump(vector<int>& nums) {int cover=0;if(nums.size()==1) return true;for(int i=0;i<=cover;i++){cover=max(nums[i]+i,cover);if(cover>=nums.size()-1){return true;}}return false;}
};

1005.k次取反后最大化数字和

给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组:

  • 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。

重复这个过程恰好 k 次。可以多次选择同一个下标 i 。

以这种方式修改数组后,返回数组 可能的最大和 。

 思路:此题也是经典的贪心法,局部最优是让绝对值大的负数变成正数,全局最优:数组和达到最大

首先,将数组排序,定义一个自定义静态函数,让绝对值最大的数排在前面,然后for循环遍历,如果k大于0且nums的值小于0,将其乘-1,k--,遍历完成后,如果此时k不为0,代表数组中只剩下正数了,就去数组中最小的数,将他变为负数,最后将数组的所有元素相加。

class Solution {
public:static bool cmp(int a,int b){return abs(a)>abs(b);}
public:int largestSumAfterKNegations(vector<int>& nums, int k) {sort(nums.begin(),nums.end(),cmp);for(int i=0;i<nums.size();i++){//将数组排好序 取绝对值最大的数if(k>0&&nums[i]<0){nums[i]*=-1;k--;}}if(k%2==1)//如果为奇数,取数值中最小的正数nums[nums.size()-1]*=-1;int sum=0;for(int a:nums){sum+=a;}return sum;}
};


http://www.ppmy.cn/server/101092.html

相关文章

python监听环境内是否有声音

python监听环境内是否有声音 首先使用pyaudio打开麦克风&#xff0c;并开始录音。然后使用一个while循环来不断读取麦克风录取的音频数据&#xff0c;然后使用numpy来分析音频数据是否有声音。当检测到有声音时&#xff0c;会打印"有声音"并退出循环。最后关闭录音流…

Angular网络请求

在Angular应用中&#xff0c;网络请求是常见的需求&#xff0c;用于从服务器获取数据或向服务器发送数据。Angular提供了多种方式来处理网络请求&#xff0c;比较常用的是HttpClient模块。 下面描述的是掌握Angular网络请求的基本步骤和概念&#xff1a; 1. 引入HttpClientMo…

鸿蒙面试题

图片处理你是怎么做的 图片处理 上传文件有没有做过 上传应用文件 开发者可以使用上传下载模块(ohos.request)的上传接口将本地文件上传。文件上传过程使用系统服务代理完成, 在api12中request.agent.create接口增加了设置代理地址参数,支持用户设置自定义代理地址。 说…

【区块链+金融服务】基于区块链的区域股权金融综合服务平台 | FISCO BCOS应用案例

区域性股权市场是我国资本市场的重要组成部分&#xff0c;是多层次资本市场体系的基石。区块链技术与区域性股权市场 分散特征天然匹配&#xff0c;从新型金融基础设施层面为场外参与各方提供公共的可信服务&#xff0c;以技术手段完善市场基础条 件&#xff0c;弥补区域性短板…

NPM使用教程:从入门到精通

NPM使用教程&#xff1a;从入门到精通&#xff0c;掌握Node.js包管理神器 引言 随着Node.js的流行&#xff0c;JavaScript已经成为服务器端开发的主力军。NPM&#xff08;Node Package Manager&#xff09;作为Node.js的官方包管理工具&#xff0c;为开发者提供了一个庞大的代…

PostgreSQL的部分索引

每个数据库的部分索引还不一样 我以前用过MySQL的部分索引。不过说实话使用场景不多。于是上次本来打算在书中也写这个。结果徐老师说PG的不一样。后来我尝试了。果然不一样。 xxg# explain select * from xxg; QUERY PLAN Seq Scan on xxg (cost0.00…45691.00 rows100000 …

WebRTC音视频开发读书笔记(一)

一、基本概念 WebRTC(Web Real-Time Communication&#xff0c;网页即时通信)于2011年6月1日开源&#xff0c;并被纳入万维网联盟的W3C推荐标准&#xff0c;它通过简单API为浏览器和移动应用提供实时通信RTC功能。 1、特点 跨平台&#xff1a;可以在Web&#xff0c;Android、…

【深度学习实战】利用Linear Regression预测房价

本文参考了李沐老师的b站深度学习课程 课程链接&#xff0c;使用了线性回归模型&#xff0c;特别适合深度学习初学者。通过阅读本文&#xff0c;你将学会如何用PyTorch训练模型&#xff0c;并掌握一些实用的训练技巧。希望这些内容能对你的深度学习学习有所帮助。 安装pytorch …