在Python中查找股票的最大收益的程序?

在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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程