LeetCode如何解决买卖股票的最佳时机问题
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章给大家分享的是有关LeetCode如何解决买卖股票的最佳时机问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、题目描述给定一个数组 prices ,它的第 i
千家信息网最后更新 2025年02月23日LeetCode如何解决买卖股票的最佳时机问题
这篇文章给大家分享的是有关LeetCode如何解决买卖股票的最佳时机问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
一、题目描述
给定一个数组 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 <= 10^50 <= prices[i] <= 10^4
二、解题思路
(1) 暴力求解法
解题思路:
这种方法很简单,对于本题,需要找出给定数组中两个数字之间的最大差值(即,最大利润)。此外,第二个数字(卖出价格)必须大于第一个数字(买入价格)。形式上,对于每组 i 和 j(其中 j > i),我们需要找出 max(prices[j]−prices[i])。
C++代码实现如下:
class Solution { public:int maxProfit(vector& prices) { int max_profit=0;for(int i=0; i 复杂度分析:
采用这种方法,时间复杂度是 O ( n 2 ) O(n^2) O(n2),所以当数组prices长度取上限 1 0 5 10^5 105时,这种方法肯定会超时,通过不了测试,如下图所示:
(2) 一次遍历
解题思路:
使用嵌套循环会超时,那么我们就来考虑一次遍历的方法。我们可以换一种思路来思考这个问题:先不要同时去考虑买入和卖出的时间。假如我们今天(第i天)要卖出,那么在什么时间(选择前i-1天都可以)买入最合适呢?
很明显,在前i-1天中,股票最低的那天买入,收益最大。
所以,我们只需先定义一个变量min_price记录历史最低价格,先求出每天卖出的时候,收益最大值。
然后,比较每一天的收益最大值就可以求出最大的利润了。
C++代码实现如下:
class Solution { public:int maxProfit(vector& prices) { int min_price = prices[0];int max_profit = 0;for(int i=1; i 测试结果:
复杂度分析:
时间复杂度:时间复杂度:O(n),只需要遍历一次。
空间复杂度:空间复杂度:O(1),只使用了常数个变量。
感谢各位的阅读!关于"LeetCode如何解决买卖股票的最佳时机问题"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
最大
股票
价格
利润
复杂
复杂度
时间
思路
方法
问题
收益
数字
数组
时候
选择
时机
最低
代码
内容
变量
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
服务器多线程并行计算
网络安全的逆逆向工程
网络安全制度建立内容安全制度
小米路由器怎么改成服务器
vmware怎么搭建虚拟服务器
手机能查看网关及dns服务器吗
nfs服务器导出的文件
服务器打折
上海多功能软件开发价格表
哪里可以找到网络技术
茅箭区服务软件开发案例
天然气软件开发公司
软件开发需求范例
网络安全管理专业有什么前途
沧州昊宇网络技术有限公司
企业网络安全等级保护通知
如何看懂监控服务器自检
网络安全培训培训
2020国家网络安全息询
广州新媒体网络技术
印度软件开发与中国对比
惠州汽车软件开发咨询
房产云采集软件开发公司
数据库查询打八折的价格怎么查询
转行做对日软件开发
泰国住宿软件开发
软件开发小组成员分配
网络安全文明施工标语
提高软件开发的效率
原神国际服务器名称