在Python中查找股票的最大收益的程序?
假设我们有一家公司按时间顺序排序的股票价格列表,我们必须找到我们可以获得的最大利润。我们必须先买后卖,并且在再次购买之前必须等待一天。
因此,如果输入为 prices = [2, 6, 9, 4, 11],则输出将是11,因为我们可以在2时买入,然后在6时卖出,等待一天,然后在4时买入,最后在11时卖出。
要解决这个问题,我们将按照以下步骤进行:
- s := 0
-
b := -无限大
-
for i in range 0 to prices 的大小,做
- temp := b
-
b := b 和 (s – prices[i]) 的最大值
-
如果 i 非零,则
- s := s 和 (temp + prices[i – 1]) 的最大值
- return s 和 (b + prices 的最后一个元素) 的最大值
让我们看以下实现,以更好地了解:
更多Python相关文章,请阅读:Python 教程
例子
class Solution:
def solve(self, prices):
s = 0
b = float("-inf")
for i in range(len(prices)):
temp = b
b = max(b, s - prices[i])
if i:
s = max(s, temp + prices[i - 1])
return max(s, b + prices[-1])
ob = Solution()
prices = [2, 6, 9, 4, 11]
print(ob.solve(prices))
输入
[2, 6, 9, 4, 11]
输出
11