【算法】【线性表】【数组】买卖股票的最佳时机

news/2024/9/19 2:38:08/文章来源:https://www.cnblogs.com/kukuxjx/p/18414939

1  题目

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。

你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。

返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。

示例 1:

输入:[7,1,5,3,6,4]
输出:5
解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。

示例 2:

输入:prices = [7,6,4,3,1]
输出:0
解释:在这种情况下, 没有交易完成, 所以最大利润为 0。

提示:

  • 1 <= prices.length <= 105
  • 0 <= prices[i] <= 104

2  解答

要得出某天的最大收益,我们就要知道这天后边的最大收益值是多少,如果我们正向遍历,我们还要找他后边的最大的数是多少,复杂度一下子就上来了,所以这题适合反向遍历,每个元素后边的最大值我们就能用一个变量来保存,也就知道某天的收益最大是多少了:

class Solution {public int maxProfit(int[] prices) {// 保存结果int res = 0;if (prices == null || prices.length <= 1) {return res;}// 保存当前元素后边的最大数 默认是最后一个元素 int maxNum = prices[prices.length - 1];// 最后一天的收益是0 所以从倒数第二开始for (int i = prices.length - 2; i >= 0; i--) {// 大于他后边的最大数 收益为0 略过if (prices[i] >= maxNum) {maxNum = prices[i];continue;}// 说明有收益 保存一下最大收益res = Math.max(maxNum - prices[i], res);}        return res;}
}

他还有两个变种,还有困难的,难住我了,呜呜呜,加油。

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

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

相关文章

读构建可扩展分布式系统:方法与实践04应用服务

应用服务1. 应用服务 1.1. 任何系统的核心都在于实现应用需求的特定业务逻辑 1.2. 服务是可扩展软件系统的核心1.2.1. 它们将契约定义为一个API,向客户端声明它们的能力1.3. 应用服务器高度依赖于编程语言,但通常都会提供多线程编程模型,允许服务同时处理许多请求 1.4. 多服…

【极速下载】Vmware17.5.2官方最新版本2024网盘下载

Mware简介VMware 是一款强大的虚拟化软件。它能在一台物理机上同时运行多个操作系统,实现资源高效利用。可用于服务器虚拟化、桌面虚拟化等。提高系统可靠性、可扩展性与安全性,降低成本和管理复杂度。VMware广泛应用于企业数据中心和云计算领域,是 IT 重要工具。 VMware最…

Junior.Crypt.2024 CTF - Forensics

补充学习了有关evtx以及注册表的知识Junior.Crypt.2024 CTF - Forensics 部分题目复现参考: https://blog.jacki.cn/2024/07/05/Junior_Crypt_2024_CTF/#SAMBO-wrestler https://yocchin.hatenablog.com/entry/2024/07/08/124230 标注“#”表示未复现,日后有机会补上吧 题目地…

全网最适合入门的面向对象编程教程:49 Python函数方法与接口-函数与方法的区别和lamda匿名函数

在 Python 中,函数和方法都是代码的基本单元,用于封装和执行特定的任务。它们之间有一些重要的区别,而 lambda 匿名函数则是 Python 提供的一种简洁定义小型函数的方法。全网最适合入门的面向对象编程教程:49 Python 函数方法与接口-函数与方法的区别和 lamda 匿名函数摘要…

基于 CrewAI 多智能体框架,手把手构建一个自动化写作应用实战

利用 CrewAI 多智能体框架,我们可以更细粒度的控制智能体和任务,通过不同的流程组织协同多智能体共同完成工作……明月皓皓,星河灿烂,中秋佳节,团圆美满。祝大家中秋节快乐!听说台风要来了,也不知道还能不能吃着月饼赏个月?老牛同学在上文(Agent(智能体)和 MetaGPT,一…

【推荐 - 源码安装】nginx - 安装

准备查看操作系统的版本信息[root@lab10 ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)查看操作系统的网卡地址[root@lab10 ~]# ip address show ens32 2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group de…

痞子衡嵌入式:JLink命令行以及JFlash对于下载算法的作用地址范围认定

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是JLink命令行以及JFlash对于下载算法的作用地址范围认定。最近痞子衡在给一个 RT1170 客户定制一个 Infineon MirrorBit 类型 64MB Flash 的 SEGGER 下载算法,做完之后在 JFlash 下测试小数据下载没有问题,但…

软件工程导论——个人项目之论文查重

软件工程导论——个人项目之论文查重这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/CSGrade22-12/这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/CSGrade22-12/homework/13220这个作业的目标 设计一个论文查重算法并实现;学会 Git 版本控制Github仓库…

主从库与切片集群机制

主从库与切片集群机制 主从复制源码剖析 redis的主从复制主要包括全量复制RDB文件,增量复制,长连接同步,使用了基于状态机的设计思想,来实现不同状态和状态间的跳转 基于状态机实现的话,在开发程序时只需要考虑不同状态下具体要执行的操作,以及状态之间的跳转条件即可 四…