Python程序:求解买卖股票最大利润


假设我们有一个名为nums的数字列表,它按时间顺序表示公司的股票价格。我们最多可以每天购买一股股票,但您可以持有多支股票,并且可以在任意多天卖出股票。返回您可以获得的最大利润。

因此,如果输入类似于nums = [3, 4, 7, 3, 5],则输出将为9,因为我们可以在3和4的价格买入股票,并在7的价格卖出。然后再次以3的价格买入,以5的价格卖出。总利润 (7 - 3) + (7 - 4) + (5 - 3) = 9。

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

  • ans := 0
  • 当nums不为空时,执行以下操作:
    • top := 从nums中删除最后一个元素
    • 当nums不为空且top > nums的最后一个元素时,执行以下操作:
      • ans := ans + (top - nums的最后一个元素)
      • 从nums中删除最后一个元素
  • 返回ans

示例

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

def solve(nums):
   ans = 0
   while nums:
      top = nums.pop()
      while nums and top > nums[-1]:
         ans += top - nums.pop()

   return ans

nums = [3, 4, 7, 3, 5]
print(solve(nums))

输入

[3, 4, 7, 3, 5]

输出

9

更新于:2021年10月14日

609 次查看

开启您的职业生涯

完成课程获得认证

开始学习
广告