股票系列

动态规划之股票买卖系列问题 文章目录一、股票买卖系列问题二、leetcode例题讲解股票买卖系列问题121. 买卖股票的最佳时机122. 买卖股票的最佳时机 II123. 买卖股票的最佳时机 III188. 买卖股票的最佳时机 IV309. 最佳买卖股票时机含冷冻期714. 买卖股票的最佳时机含手续费 动态规划问题还有一系列股票买卖的经典问题。在这里进行汇总学习。 一、股票买卖系列问题 121. 买卖股票的最佳时机:股票只能买卖一次。 122. 买卖股票的最佳时机 II:股票可以多次买卖。 123. 买卖股票的最佳时机 III:股票最 阅读详情

目录

121. 买卖股票的最佳时机

122. 买卖股票的最佳时机 II

123. 买卖股票的最佳时机 III

188. 买卖股票的最佳时机 IV

309. 最佳买卖股票时机含冷冻期

714. 买卖股票的最佳时机含手续费

剑指 Offer 63. 股票的最大利润


121. 买卖股票的最佳时机

难度 简单

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。

如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。

注意:你不能在买入股票前卖出股票。

示例 1:

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

示例 2:

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

 

理解:

这个题相对简单,股票只能买卖一次,那么就遍历整个数组,找出一个阶段的最小值,然后计算最大利润即可。

代码:

class Solution {
    public int maxProfit(int[] prices) {
        if (prices == null || prices.length < 2) {
            return 0;
        }
        int minPrice = prices[0];
        int maxProfit = 0;
        int len = prices.length;
        for (int i = 1; i < len; i++) {
            minPrice = prices[i] < minPrice ? prices[i] : minPrice;
            maxProfit = Math.max(maxProfit, prices[i] - minPrice);
        }
        return maxProfit;
    }
}

 

122. 买卖股票的最佳时机 II

难度 简单

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。

设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。

注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

 

示例 1:

输入: [7,1,5,3,6,4]
输出: 7
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。
     随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。

示例 2:

输入: [1,2,3,4,5]
输出: 4
解释: 在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。
     注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。
     因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。

示例 3:

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

 

提示:

  • 1 <= prices.length <= 3 * 10 ^ 4
  • 0 <= prices[i] <= 10 ^ 4

 

 

 

 

123. 买卖股票的最佳时机 III

难度困难497

给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。

设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。

注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

示例 1:

输入: [3,3,5,0,0,3,1,4]
输出: 6
解释: 在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的时候卖出,这笔交易所能获得利润 = 3-0 = 3 。
     随后,在第 7 天(股票价格 = 1)的时候买入,在第 8 天 (股票价格 = 4)的时候卖出,这笔交易所能获得利润 = 4-1 = 3 。

示例 2:

输入: [1,2,3,4,5]
输出: 4
解释: 在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。   
     注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。   
     因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。

示例 3:

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

 

 

 

188. 买卖股票的最佳时机 IV

难度 困难

给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。

设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。

注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

示例 1:

输入: [2,4,1], k = 2
输出: 2
解释: 在第 1 天 (股票价格 = 2) 的时候买入,在第 2 天 (股票价格 = 4) 的时候卖出,这笔交易所能获得利润 = 4-2 = 2 。

示例 2:

输入: [3,2,6,5,0,3], k = 2
输出: 7
解释: 在第 2 天 (股票价格 = 2) 的时候买入,在第 3 天 (股票价格 = 6) 的时候卖出, 这笔交易所能获得利润 = 6-2 = 4 。
     随后,在第 5 天 (股票价格 = 0) 的时候买入,在第 6 天 (股票价格 = 3) 的时候卖出, 这笔交易所能获得利润 = 3-0 = 3 。

 

 

309. 最佳买卖股票时机含冷冻期

难度 中等

给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。​

设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):

  • 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
  • 卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。

示例:

输入: [1,2,3,0,2]
输出: 3 
解释: 对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出]

 

714. 买卖股票的最佳时机含手续费

难度 中等

给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 ;非负整数 fee 代表了交易股票的手续费用。

你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。

返回获得利润的最大值。

注意:这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。

示例 1:

输入: prices = [1, 3, 2, 8, 4, 9], fee = 2
输出: 8
解释: 能够达到的最大利润:  
在此处买入 prices[0] = 1
在此处卖出 prices[3] = 8
在此处买入 prices[4] = 4
在此处卖出 prices[5] = 9
总利润: ((8 - 1) - 2) + ((9 - 4) - 2) = 8.

注意:

  • 0 < prices.length <= 50000.
  • 0 < prices[i] < 50000.
  • 0 <= fee < 50000.

 

剑指 Offer 63. 股票的最大利润

难度中等52

假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?

 

示例 1:

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

示例 2:

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

限制:

0 <= 数组长度 <= 10^5

 

leetcode系列-股票问题 动态规划-股票系列 121-买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。 思路:暴力解法 + 一次遍历 /** * 方法一:暴力法:超时 * 我们需要找出给定数组中两个数字之间的最大差值(即,最大利润)。 * 此外,第二个数字 阅读详情

相关推荐

LeetCode买卖股票的最佳时机系列总结

LeetCode买卖股票的最佳时机系列总结 此类动态规划从二维动规理解后优化到一维动规,部分题目还可以用到贪心。 目录: 121 买卖股票的最佳时机1 122 买卖股票的最佳时机2 123 买卖股票的最佳时机3 188 买卖股票的最佳时机4 309 买卖股票的最佳时机+冷冻期 714 买卖股票的最佳时机+手续费(2的基础上卖出时-手续费) 121 买卖股票的最佳时机(买卖一次) 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入

ChaseHeart的博客 586

【剑指offer系列】70. 股票的最大利润

【剑指offer系列】70. 股票的最大利润

姚先生的全栈之路 345

【刷题记录 python】股票买卖系列

leetcode 股票买卖系列

cccrrr_BG的博客 648

股票交易最大利润

以第二个数作为交易的开始,求第二个数后的最大值作为交易结束,获得这次交易的最大利。将第一个数作为交易的开始,求剩下的最大值作为交易结束,获得本次交易最大利润;根据所有的交易利润,求得最大利润。股票只可进行一次交易,求最大利润。

yayakoko的博客 303

拆解英飞凌CoolGaN:如何用Silvaco TCAD仿真评估功率GaN HEMT的关键性能(BV、Qg、开关损耗)

本文详细解析了如何使用Silvaco TCAD仿真工具评估英飞凌CoolGaN功率GaN HEMT的关键性能指标,包括击穿电压(BV)、栅电荷(Qg)和开关损耗。通过精确建模极化效应、优化边缘终端结构以及高频开关损耗仿真技术,为功率器件工程师提供了一套完整的'设计-仿真-验证'方法论,助力GaN HEMT在快充、数据中心电源等领域的应用。

weixin_29159995的博客 427

从TM1到TM9:手把手教你用Wireshark抓包分析LTE下行调度与传输模式切换

本文详细解析了如何使用Wireshark抓包分析LTE下行调度中的传输模式切换,从TM1到TM9的动态调整过程。通过实战案例,包括小区边缘移动、高速场景和多用户调度,揭示eNodeB如何基于信道质量指标(如RSRP、SINR)动态切换传输模式,并提供关键信令解析和优化建议,助力网络工程师提升LTE网络性能。

weixin_42651748的博客 315

面试题63-股票的最大利润

题目 假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少? 解题思路 我们可以先定义函数diff(x)为当卖出价位数组中第i个数字时可能获得的最大利润。显然,在卖出价固定时,买入价越低获得的利润越大。也就是说如果在扫描到数组中的第i个数字时,只要我们能够记住之前的i-1个数字中的最小值,就能算出在当前价位卖出时可能得到的最大利润。 C++实现 class Solution { public: int maxProfit(vector<int>&a

weixin_42127177的博客 1597

Arm A-profile架构RAS系统设计:可靠性、可用性与可服务性解析

在计算机体系结构中,可靠性(Reliability)、可用性(Availability)和可服务性(Serviceability)是构建高可信系统的核心要素。RAS系统通过硬件错误检测、隔离和恢复机制,确保系统持续稳定运行。其技术原理包括ECC内存纠错、冗余执行单元和错误传播阻断等关键技术,可显著降低数据中心等关键业务场景的故障率。现代芯片设计中,Arm A-profile架构提供标准化的RAS框架,涵盖从内存子系统到计算单元的全方位错误管理。通过分层防御策略和统一错误记录格式,实现硬件错误可追溯、可修复。

weixin_30920853的博客 357

股票的最大利润

题目内容: 解题思路: 根据要求,我们要找的最大利润,一定要保证一个条件,在最小的时候买入,在最大的时候卖出,但是,这里面的我们并不能保证最大的一定是在最小的后面出现 因此,我们的最大最小就要进行判断(相对来说的最大最小) 这个大是在相对的范围内最大,小也是一样 当我们找到一个最小的元素时,从这个元素开始,判断后面的元素,要是比他还小,那就更新最小的,缩小区间,要是有大的,那就更新最大利润,直到找出最大的最大利润 从最开始遍历时,不断更新在一个相对区间里的bestprice(这里找出了许多

qq_54773998的博客 525

CANoe软件之离线报文回放与分析实战

本文详细介绍了如何使用CANoe软件进行离线报文回放与分析,帮助工程师将现场故障数据转化为可反复研究的实验室资源。通过实战步骤,指导如何搭建分析工程、加载DBC文件解码信号,并利用Trace和Graphics窗口进行深度数据筛选与图形化分析,从而高效定位汽车电子故障,是提升诊断效率的关键技能。

weixin_29227585的博客 529

UE4引擎分析获取UWord,GName,GetName,GObjectArray

UE4引擎具有很多固定特征和特性 所以我们在逆向UE4引擎开发的游戏的时候,可以利用这些特征和特性. 当然,正常思路逆向也是没问题的(例如我们的ttw课程全数据逆向),你就当多了一个针对于该引擎逆向的快捷方式 或则多了一个思路即可. 正常逆向+引擎分析,使逆向结果全面且快速.

任鸟飞2217777779的博客 1万+

股票最大利润2

随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3。在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。在这种情况下, 交易无法获得正利润,所以不参与交易可以获得最大利润,最大利润为 0。

Ct314的博客 609

基于BenchmarkSQL的达梦数据库TPCC性能测试

中的用户和密码在达梦数据库中创建测试用户,并保证其表空间足够容纳生成的测试数据。如果开启了归档,还要考虑归档日志占用的空间。BenchmarkSQL默认不支持达梦数据库。这里我们让BenchmarkSQL把达梦数据库当作Oracle即可。Oracle数据库对应的测试配置文件为。是使用BenchmarkSQL进行性能测试的主要配置文件。是生成的测试报告,png文件是报告中包含的图片。拷贝达梦数据库驱动到BenchmarkSQL的。测试结束后,会在当前路径下生成一个以。规则命名的结果目录。

Sebastien23的博客 2635

股票问题系列通解

强推这篇文章 股票问题系列通解(转载翻译) 相信读完你肯定会有收获的!!

fkuner的博客 202

109. 使用 SAP UI5 FileUploader 控件上传本地文件

我们可以使用SAPUI5提供的控件,将本地文件上传到远端服务器进行存储。远端服务器负责接收上传的文件的逻辑,可以采取Java,Node.js或者ABAP等任意的编程语言实现。本地文件上传也是最终用户同文件服务器交互的重要手段之一,因此文件上传这个主题,本教程会通过若干篇文章连续进行介绍。笔者还另外实现了一个不通过SAPUI5FileUploader控件,而是直接用HTML原生的input。先看本步骤完成后实现的场景。本步骤完整的源代码位置。进入目录109,运行命令行。...

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2236

IDCNBSAIS-财务报表功能范围取值管理费用、销售费用、研发费用排除指定科目的实现

研究了很多方法,没有办法实现,只在营业费用增加一个冲抵项解决,也咨询了外部顾问说要建立自建表。限于需要马上修正后面只能用了最最low的办法处理了一下。公司遇到的一个问题,目前报表有些项目是按照功能范围取值的,发现取多了。IDCNBSAIS-财务报表功能范围取值管理费用、销售费用、研发费用排除指定科目的实现。最后结果是正确的,但是总觉得有更好的办法,不知道有没有高人可以指点一下?建立一个调整项的目录,在每个节点做了调整。除了研发费用做了冲抵在以下每个节点都做了冲抵。为财务报表定义表格结构。

nopicture的博客 1493

线性dp之股票系列问题

定义 dp[i][0] 表示第 i 天交易完后手里没有股票的最大利润,dp[i][1] 表示第 i 天交易完后手里持有一支股票的最大利润。用动态规划解题就是利用思路2,dp[i]表示前i天的最大利润,同样记录前i天的最低价格,状态转移方程为,dp[i]=max(dp[i−1],prices[i]−minprice)总的最大利润可能是没有卖出,卖出1次,或卖出2次的情况。定义dp[i][0]为第i天持有股票,dp[i][1]为第i天不持有股票且处在冷冻期,dp[i][2]为第i天不持有股票且不在冷冻期。

2402_88126487的博客 730

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

LeetCode-股票系列

LeetCode-股票系列 相关题目有: 121.买卖股票的最佳时机(剑指Offer63)-- 简单、中等 122.买卖股票的最佳时机Ⅱ – 简单 123.买卖股票的最佳时机Ⅲ – 困难 188.买卖股票的最佳时机Ⅳ – 困难 309.最佳买卖股票时机含冷冻期 – 中等 714.买卖股票的最佳时机含手续费 – 中等 题目描述 给定一个数组,它的第 iii 个元素是一支给定股票第 iii 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。 注意:你不

qq_38977067的博客 262

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

LeetCode买卖股票系列

这几天基金一地基毛,钱没了,不如来总结一下LeetCode买卖股票的题,争取下次都在最佳时机买入卖出。 总结 题解 121. 买卖股票的最佳时机 贪心法,显然,如果我们真的在买卖股票,我们肯定会想:如果我是在历史最低点买的股票就好了!我们只要用一个变量记录一个历史最低价格 minprice,我们就可以假设自己的股票是在那天买的。那么我们在第 i 天卖出股票能得到的利润就是 prices[i]−minpriceprices[i] - minpriceprices[i]−minprice。 需要更新的就是min

qq_41562704的博客 2096

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

算法题目 股票交易系列

目录只能进行一次的股票交易可以进行无限次的股票交易只能进行两次的股票交易可以进行K次的股票交易需要冷冻期的股票交易需要交易费用的股票交易 只能进行一次的股票交易 leetcode 121 买卖股票的最佳时机(简单) 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 注意你不能在买入股票...

coding 3127

股票问题系列

系列一:121. 买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。 示例 1: 输入:[7,1,5,3,6,4] 输出:5 解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1

yangyangcome的博客 455

买卖股票系列问题

某天发生买入则手里的钱减少,某天发生卖出则手里的钱增多。问题表象:不同天的股票价格不同,经过一系列的买卖操作,实现收益最大化。问题抽象:既然要实现收益最大化,也就是手里的钱最大化,只关注。即可,因为最后不持有股票时,收益才会是最大。为了时刻保持手中的钱最大化,因此。,买入后第j天发生卖出,则。,卖出后手中的钱记为。

qq_34233136的博客 801

股票问题系列通解(转载翻译)

股票问题系列通解(转载翻译)

押切徹的博客 155

算法之股票最佳时机系列问题(一次搞定6道股票问题)

简述 本文旨在总结leetcode中遇到的一系列股票问题,分别详细阐述解决方法和各问题之间的区别。 目录 1. T121 买卖股票的最佳时机 简单 2. T122 买卖股票的最佳时机 II 简单 3. T123 买卖股票的最佳时机 III 困难 4. T188 买卖股票的最佳时机 IV 困难 5. T309 最佳买卖股票时机含冷冻期 中等 6. T714 买卖股票的最佳时机含手续费 中等 以上题目均来自leetcode 题目 ####1. 买卖股票的最佳时机 题目描述 给定一个数组,它的第 i 个元素是

pl0321的博客 1190

Leetcode习题集-股票交易系列

LeetCode股票交易系列一共有6道题,运用贪心思想和动态规划来解题! 文章目录题目条件:在主题干下分别加上以下条件分析1) 最多进行 1 笔交易(k=1)【贪心算法实现】2) 不限交易次数【二维 DP】3) 不限交易次数,但有「冷冻期」的额外条件。4) 不限交易次数,但有「手续费」的额外条件5) 最多进行 2 笔交易(k=2)【三维 DP】6) 最多进行 k 次交易 题目 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。 条件:在主题干

Mr_Gu的博客 552

LeetCode股票交易问题系列记录

在LeetCode上有六道股票交易系列的算法习题,虽然这些习题的标签基本都是动态规划,但是初学者似乎很难短时间内写出高效的解决方案。笔者之前在刷这些习题的时候碰到了一个十分不错的想法,即动态规划结合有限状态机的思想来确定状态转移方程,笔者这里简单的记录一下供大家阅读拓展思路。 通用模板 利用“状态”进行穷举,具体到每一天,看看总共有集中可能的“状态“,再找出每个状态对应的选择。伪代码如下: for...

Lam Tang的博客 934
上一篇: springCloud学习一之Eureka
下一篇: 代码提升刷题篇
给自己加加油
博客等级 码龄8年 302粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值