给定一个数组prices,它的第i个元素prices[i]表示一支给定股票第 1天的价格。 你只能选择某一天买入这只股票,并选择在未来的某-个不同的日子卖出该股 票。设计个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回0
时间: 2024-10-23 10:09:55 浏览: 11
股票买卖最佳时机leetcode-best-time-to-buy-and-sell-stocks:Java程序选择在给定的股票价格数组中买卖
这是一个经典的动态规划问题,通常被称为“股票买卖”问题。你可以通过创建两个变量`min_price`和`max_profit`来解决这个问题。`min_price`记录到目前为止最低的价格,`max_profit`则是到目前为止的最大利润。
1. 初始化`min_price`为数组的第一个元素,`max_profit`为0。
2. 遍历数组prices,对于每个价格`price`:
a. 如果`price`小于`min_price`,则更新`min_price`。
b. 否则,计算当前利润`price - min_price`,并将这个值与`max_profit`比较。如果`price - min_price`更大,则更新`max_profit`。
3. 遍历结束后,`max_profit`即为最大可获取的利润。
Python伪代码如下:
```python
def maxProfit(prices):
if len(prices) < 2:
return 0
min_price = prices[0]
max_profit = 0
for price in prices[1:]:
if price < min_price:
min_price = price
else:
profit = price - min_price
if profit > max_profit:
max_profit = profit
return max_profit
```
阅读全文