在python中最多两次买卖股票后找到最大利润的程序

假设我们有一个称为价格的数字列表,它按时间顺序表示一个公司的股票价格,我们必须找到最多可以通过买卖该股票两次而获得的最大利润。我们必须先买然后卖。

因此,如果输入就像价格= [2、6、3、4、2、9],那么输出将是11,因为我们可以以价格2购买,然后以6出售,再次以2购买,然后出售在9。

为了解决这个问题,我们将遵循以下步骤-

  • first_buy:= -inf,first_sell:= -inf

  • second_buy:= -inf,second_sell:= -inf

  • 对于价格中的每个像素,

    • first_buy:= first_buy和-px的最大值

    • first_sell:= first_sell和(first_buy + px)的最大值

    • second_buy:= second_buy和(first_sell-px)的最大值

    • second_sell:= second_sell的最大值和(second_buy + px)

  • 返回最大值0,first_sell和second_sell

让我们看下面的实现以更好地理解-

例 

class Solution:

   def solve(self, prices):

      first_buy = first_sell = float("-inf")

      second_buy = second_sell = float("-inf")

      for px in prices:

         first_buy = max(first_buy, -px)

         first_sell = max(first_sell, first_buy + px)

         second_buy = max(second_buy, first_sell - px)

         second_sell = max(second_sell, second_buy + px)

      return max(0, first_sell, second_sell)

ob = Solution()prices = [2, 6, 3, 4, 2, 9]

print(ob.solve(prices))

输入值

[2, 6, 3, 4, 2, 9]

输出结果

11

以上是 在python中最多两次买卖股票后找到最大利润的程序 的全部内容, 来源链接: utcz.com/z/356444.html

回到顶部