LeetCode-121. Best Time to Buy and Sell Stock

本文解析了一类关于寻找股票买卖最佳时机的问题,通过分析价格序列找出最大收益策略,并提供了C++实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Description:

这里写图片描述

Example 1:

这里写图片描述

Example 2:

这里写图片描述

Solution (C++):

这里写图片描述

后续更新

其他类似的题目可参考:

算法分析:

这道题和我之前做过的一道题LeetCode-122. Best Time to Buy and Sell Stock II是一个系列的。当时不太懂题目的意思,现在明白了,就是说,这个数列是一只股票在第0天、第1天、第2天······第n天的价格。这道题的要求是我们买卖一次,然后要获得最大利润。那么其实就是要找到数列中差别最大的两个数,而且第一个数小,第二个数大。
那么具体的解法就是。假如现在是第i天。之前0~i天的股票价格中,最低价是minp。那么今天卖股票的利润就是prices[i]-minp.那么我们在每一天都和最大利润sell比较。自然就可以获得最大利润了。

程序分析:

程序没啥多说点。有一点:INI_MAX与INI_MIN这两个常量:

INT_MIN = -2^31
INT_MAX = 2^31 - 1

这两个数分别表示int型最大数与最小数。32位运算器下。以后就不用写9999999了。
还有一点,有一个Error的地方就是,我初始化minp是通过:

minp=prices[0];

来完成的,但这样系统报错。后来改成99999999就没报错了。所以初始化还是以常量为好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值