给定n个整数(2 ≤ n ≤ 100),表示连续n天某股票的售卖价格,计算仅买卖该股票一次可能获得的最大利润(如没有利润输出0)。 【例如】 输入7 1 5 3 6 4,会输出5。因为在第2天(股票价格 = 1)的时候买入,在第5天(股票价格 = 6)的时候卖出,能获得最大利润 = 6 - 1 = 5 。注意利润不能是7 - 1 = 6,因为7在1前面,7相对于1来说是买入价格,1是卖出价格,先有买入才会有卖出。 输入7 6 4 3 1 时,会输出0。因为在这种情况下, 没有交易完成,所以最大利润为0。
时间: 2024-02-13 08:05:39 浏览: 108
判断一个整数是否是2的N次幂实现方法
这道题可以使用贪心算法来解决。具体来说,我们可以记录当前股票历史价格的最低价 min_price 和最大利润 max_profit,然后遍历整个股票历史价格列表,对于每个价格 price,我们计算当前价格与历史最低价的差值 profit,并将其与历史最大利润 max_profit 比较,如果 profit 大于 max_profit,则将其更新为新的最大利润。最后遍历完成后,max_profit 就是能够获得的最大利润。
以下是 Python 的实现代码:
```python
n = int(input())
prices = list(map(int, input().split()))
min_price = float("inf") # 记录历史最低价,初始值设为正无穷
max_profit = 0 # 记录历史最大利润,初始值设为 0
for price in prices:
# 如果当前价格比历史最低价还低,则更新历史最低价
if price < min_price:
min_price = price
# 计算当前价格与历史最低价的差值
profit = price - min_price
# 如果当前差值大于历史最大利润,则更新历史最大利润
if profit > max_profit:
max_profit = profit
print(max_profit)
```
时间复杂度为 O(n),空间复杂度为 O(1)。
阅读全文