贪心算法—股票交易时机Ⅱ

在此前我们已经介绍过贪心算法以及股票交易时机Ⅰ,有需要的话可以移步至贪心算法_Yuan_Source的博客-CSDN博客

题目介绍

122. 买卖股票的最佳时机 II - 力扣(LeetCode)

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

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

示例 1:

输入:prices = [7,1,5,3,6,4,3]
输出:7

由上面的示例我们可以看出,我们要去计算的实际上就是在折线图中呈增长趋势的增长的总值。

我们可以提出解法一:双指针法

实现原理如下:

  1. 初始化两个变量prevcur,分别表示当前子数组的起始位置和结束位置。
  2. 初始化一个变量sum,用于存储最大利润。
  3. 使用一个while循环遍历股票价格数组。
  4. 在循环中,首先检查cur是否等于股票价格数组的长度减1,如果是,则将prices[cur] - prices[prev]加到sum中,并跳出循环。
  5. 如果cur不等于股票价格数组的长度减1,则检查prices[cur + 1]是否大于prices[cur]。如果是,则将cur加1,否则执行以下操作: a. 将prices[cur] - prices[prev]加到sum中。 b. 将cur加1,并将prev更新为cur
  6. 循环结束后,返回sum

注意事项:

  1. 代码中使用了两个变量prevcur来表示当前子数组的起始位置和结束位置。在循环中,当prices[cur + 1]小于等于prices[cur]时,将prices[cur] - prices[prev]加到sum中,并将cur加1,将prev更新为cur。这样做的目的是为了计算出股票价格数组中所有可能的子数组的最大值之差,并找到最大值。
  2. 代码中使用了while循环来遍历股票价格数组,直到cur等于股票价格数组的长度减1。在循环中,首先检查cur是否等于股票价格数组的长度减1,如果是,则将prices[cur] - prices[prev]加到sum中,并跳出循环。然后检查prices[cur + 1]是否大于prices[cur],如果是,则将cur加1,否则执行上述操作。这样做的目的是为了计算出股票价格数组中所有可能的子数组的最大值之差,并找到最大值。
class Solution {
public:int maxProfit(vector<int>& prices) {int prev = 0, cur = 0;int sum = 0;while (cur < prices.size()) {if (cur == prices.size() - 1) {sum += prices[cur] - prices[prev];break;}if (prices[cur + 1] > prices[cur]) {cur++;} else {sum += prices[cur] - prices[prev];cur++;prev = cur;}}return sum;}
};

解法二:贪心

实现原理:

  1. 首先检查输入数组是否为空,如果为空则返回0。
  2. 初始化一个名为sum的变量,用于存储累计利润。
  3. 使用一个for循环遍历数组,从第一个元素到倒数第二个元素。
  4. 在循环中,检查当前元素(prices[i])和下一个元素(prices[i + 1])的大小关系。
  5. 如果prices[i + 1]大于prices[i],说明当前股票价格较低,可以买入。将prices[i + 1] - prices[i]累加到sum中,表示这次买入的利润。
  6. 循环结束后,返回sum作为最终结果。
class Solution {  
public:  int maxProfit(vector<int>& prices) {  // 如果价格数组为空,则无法进行交易,直接返回0  if (prices.empty())  return 0;  int sum = 0; // 初始化总利润为0  // 遍历价格数组,除了最后一天(因为我们需要比较相邻两天的价格)  for (int i = 0; i < prices.size()-1; i++) {  // 如果后一天的价格高于前一天,则进行交易并累加利润  if(prices[i+1] > prices[i]){  sum += prices[i+1] - prices[i];  }  // 如果后一天的价格不高于前一天,则不进行交易,继续遍历  }  // 返回累计的总利润  return sum;  }  
};

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

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

相关文章

楼宇智能技术实训室解决方案

一、楼宇智能技术实训室建设背景 随着信息技术的迅猛发展&#xff0c;智能化已经成为现代建筑发展的重要趋势。楼宇智能技术&#xff0c;作为智能化建筑的核心支撑&#xff0c;集成了物联网、大数据、云计算、人工智能等多种先进技术&#xff0c;实现了楼宇内部各类设施、系统…

【Java算法专场】前缀和(上)

前言 在求数组或者矩阵求和等问题&#xff0c;我们如果采用暴力解法&#xff0c;时间复杂度可能会达到O(n)或者更高&#xff0c;因此&#xff0c;我们可利用前缀和来解决。 前缀和 前缀和是指序列中的n项和&#xff0c;相当于数学问题中秋数列的前n项和。主要用于数组或列表中…

ElasticSearch入门(六)SpringBoot2

private String author; Field(name “word_count”, type FieldType.Integer) private Integer wordCount; /** Jackson日期时间序列化问题&#xff1a; Cannot deserialize value of type java.time.LocalDateTime from String “2020-06-04 15:07:54”: Failed to des…

【C++】学习笔记——C++的类型转换

文章目录 二十三、C的类型转换1. C语言中的类型转换2. C类型转换static_castreinterpret_castconst_castdynamic_cast 未完待续 二十三、C的类型转换 1. C语言中的类型转换 在C语言中&#xff0c;如果赋值运算符左右两侧类型不同&#xff0c;或者形参与实参类型不匹配&#x…

声学改造后的气膜馆:提升体验的独特优势—轻空间

气膜馆因其快速建造、低成本和灵活性&#xff0c;近年来广泛应用于各种运动和活动场所。然而&#xff0c;传统气膜馆在声学表现上存在一些挑战&#xff0c;例如回声和噪音的控制。随着声学改造技术的应用&#xff0c;气膜馆的声学环境得到了显著改善。轻空间将探讨声学改造后的…

轨迹优化 | 基于ESDF的共轭梯度优化算法(附ROS C++/Python仿真)

目录 0 专栏介绍1 数值优化:共轭梯度法2 基于共轭梯度法的轨迹优化2.1 障碍约束函数2.2 曲率约束函数2.3 平滑约束函数3 算法仿真3.1 ROS C++实现3.2 Python实现0 专栏介绍 🔥课设、毕设、创新竞赛必备!🔥本专栏涉及更高阶的运动规划算法轨迹优化实战,包括:曲线生成、…

2024年对初学者友好的4款视频剪辑软件不容错过

在这个视觉当道的时代&#xff0c;视频剪辑不再是专业人士的专属领域。随着技术的进步&#xff0c;现在即使是初学者也能轻松上手&#xff0c;发挥自己的创意。今天&#xff0c;我来给大家推荐四款在2024年非常适合初学者使用的视频剪辑软件&#xff0c;让你的创意能够在指尖轻…

Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules。Android studio纯java代码报错

我使用java代码 构建项目&#xff0c;初始代码运行就会报错。我使用的是Android Studio Giraffe&#xff08;Adroid-studio-2022.3.1.18-windows&#xff09;。我在网上找的解决办法是删除重复的类&#xff0c;但这操作起来真的太麻烦了。 这是全部报错代码&#xff1a; Dupli…

VLC实现视频文件转RTSP流

1.选择本地文件 2.创建流 现在已经开始推流了&#xff1a; 3.播放上面创建的流 访问地址&#xff1a;rtsp://:8554/test111

dfs,CF 196B - Infinite Maze

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 https://codeforces.com/problemset/problem/196/B 二、解题报告 1、思路分析 考虑如何判断一条路径可以无限走&#xff1f; 我们对朴素的网格dfs改进&#xff0c;改进为可以dfs网格外的区域 如果存在某个…

免费分享:全国传统村落空间分布数据(附下载方法)

数据简介 本数据是在中国传统村落名录的基础上&#xff0c;通过地理编码&#xff0c;制作成具有空间坐标信息的矢量数据。 数据属性 数据名称&#xff1a;全国传统村落空间分布数据数据时间&#xff1a;2012年至今&#xff0c;更新至第五批空间位置&#xff1a;全国数据格式&…

模拟自然光照:饮料稳定性测试的创新方法

饮料添加剂的光照稳定性测试旨在评估其在光照影响下的保持稳定性的能力&#xff0c;特别是在储存期间。此测试有助于制造商理解饮料在不同光源作用下的变化&#xff0c;例如颜色、口感、香气等感官性质的变化&#xff0c;以及营养成分的衰变速率。这些信息对改进产品配方、包装…

与树莓派的“黄金”关系,是如何帮助这家医疗设备公司扩大规模

稳定的供应和与Raspberry Pi的“黄金”关系帮助医疗设备公司进行了规模扩张 埃及医疗设备制造商Bio Business需要将物联网功能集成到其成功的患者监测设备系列中。Raspberry Pi技术使他们得以实现。 解决方案 RP2040 Compute Module 4 企业规模 中小企业 行业 医疗技术 …

怎么挑选适合企业的安全管理软件?2024值得推荐的5款安全管理软件?

在企业安全管理时&#xff0c;你是否遇到过以下问题&#xff1a; 工作点多面广&#xff0c;信息整理和分析的工作量大&#xff0c;手工处理繁杂耗时&#xff1b; 传统巡检方式&#xff0c;无法保证巡检过程结果真实性&#xff1b; 纸质记录不清晰&#xff0c;问题改进缺乏数…

使用SpaceDesk实现iPad成为电脑拓展屏(保姆级教程)

使用SpaceDesk实现iPad成为电脑拓展屏 SpaceDesk是一个开源的软件, 所以说对学生和平民用户非常的友好, 连接后的画质也非常不错, 而且具有无线和有线两种连接方式. 接下来就开始教程: 1. 安装SpaceDesk电脑版 首先我们要下载SpaceDesk电脑版安装好: SpaceDesk官网 注意: …

2006-2022年中国农村经营管理年报

2006-2022年中国农村经营管理年报 1、时间&#xff1a;2006-2022年 2、格式&#xff1a;2006-2014年为EXCEL&#xff0c;2015-2022年为PDF 3、说明&#xff1a;根据农村经营管理情况统计报表制度调查数据整理、编辑的。本资料系统收录了全国各省、自治区、直辖市农村集体经济…

https执行过程,特点,作用

还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#xff0c;webgl&#xff0c;ech…

【Spring Boot】手撕搜索引擎项目,深度复盘在开发中的重难点和总结(长达两万6千字的干货,系好安全带,要发车了......)

目录 搜索引擎搜索引擎的核心思路 一、解析模块1.1 枚举所有文件1.2 解析每个文件的标题&#xff0c;URL以及正文1.2.1 解析标题1.2.2 解析URL1.2.3 解析正文 1.3 线程池优化代码 二 、创建排序模块2.1 构建正排索引2.2 构建倒排索引2.3 序列化2.4 反序列化 三、搜索模块3.1 引…

86. UE5 RPG 技能面板实现监听数据

在上一篇文章里&#xff0c;我们创建了技能面板的控制器&#xff0c;接下来&#xff0c;我们将实现通过控制器绑定委托&#xff0c;来更新显示内容。 更新技能面板应用的技能 我们首先更新技能面板上面已经应用的技能&#xff0c;让其和WBP_Overlay上面一样&#xff0c;可以更…

ELK+filebeat

ELKfilebeat 一、filebeat概述 1、filebeat概念&#xff1a; filebeat日志收集工具和logstash相同 filebeat是一款轻量级的日志收集工具&#xff0c;可以在非JAVA环境下运行。 因此&#xff0c;filebeat常被用在非JAVAf的服务器上用于替代Logstash&#xff0c;收集日志信息。…