是否计划通过购买和出售Python股票来找到最大的利润?

假设我们有一个按时间顺序排列的公司股价列表,我们必须找到可以通过买卖股票获得的最大利润。我们必须在买入之前买入,并且必须在卖出股票后等待一天才能再次买入。

因此,如果输入就像价格= [2、6、9、4、11],那么输出将是11,因为我们可以在2买入,然后在6卖出,等待一天,然后在4买入,然后以11。

为了解决这个问题,我们将按照以下步骤操作:

  • s:= 0

  • b:=-无穷大

  • 对于价格范围为0的i,

    • s:= s和(temp + price [i-1])的最大值

    • 温度:= b

    • b:= b和(s-价格[i])的最大值

    • 如果我不为零,则

    • 返回s和(b +价格的最后一个元素)的最大值

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

    示例

    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
    猜你喜欢