返回
买入低价股票,卖出高价股票:征服LeetCode 121
后端
2023-12-03 02:34:09
在股票市场上,把握正确的时机买入和卖出股票,是投资成功的关键。LeetCode 121:“买卖股票的最佳时机”要求投资者找到最佳的时机买入股票,并在其价格达到最高点时卖出,以获得最大利润。
踏上征服LeetCode 121的征途,我们首先要了解题目的精髓。这道题看似简单,但实则蕴藏着深刻的动态规划思想。我们必须寻找到买入股票的最低点,以及卖出股票的最高点,才能实现利润最大化。
一次遍历,洞悉市场先机
面对LeetCode 121,我们可以采取一次遍历的方法来解决问题。一次遍历意味着我们只遍历一次股票价格数组,就能找到买入和卖出的最佳时机。
在一次遍历中,我们会遇到三种不同的状态:
- 未持有股票: 处于这个状态时,我们可以选择买入股票或等待下一个机会。
- 持有股票: 处于这个状态时,我们需要等待股票价格上涨,才能在合适的时机卖出股票获利。
- 已卖出股票: 处于这个状态时,我们已经获利了结,可以等待下一个买入机会。
代码示例
def maxProfit(prices):
"""
:type prices: List[int]
:rtype: int
"""
if not prices:
return 0
min_price = float('inf')
max_profit = 0
for price in prices:
if price < min_price:
min_price = price
elif price - min_price > max_profit:
max_profit = price - min_price
return max_profit
示例:
考虑以下股票价格数组:
[7, 1, 5, 3, 6, 4]
使用一次遍历的方法,我们可以得到以下步骤:
- 初始状态: 未持有股票
- 股价为7,由于尚未持有股票,因此我们等待下一个买入机会。
- 持有股票:
- 股价下跌至1,我们以1元的价格买入股票。
- 持有股票:
- 股价上涨至5,但我们继续持有股票,等待更高的价格。
- 已卖出股票:
- 股价下跌至3,我们以3元的价格卖出股票,获利2元。
- 未持有股票:
- 股价上涨至6,我们等待下一个买入机会。
- 持有股票:
- 股价下跌至4,我们以4元的价格买入股票。
- 已卖出股票:
- 股价上涨至6,我们以6元的价格卖出股票,获利2元。
经过一次遍历,我们最终获得的利润为4元。
LeetCode 121:“买卖股票的最佳时机”看似简单,实则蕴藏着深刻的算法思想。通过一次遍历的方法,我们可以高效地找到买入和卖出的最佳时机,从而实现利润最大化。希望这篇文章能为您在征服LeetCode 121的征途中提供帮助。