在Python中找到持有和销售股票获得的最大利润的程序

在Python中找到持有和销售股票获得的最大利润的程序

假设我们有一个按时间顺序排列的公司股票价格列表叫做nums。我们最多可以买一股股票,但可以持有多支股票,并可以在任意天数内出售股票。返回您可以赚取的最大利润。

因此,如果输入为nums = [3, 4, 7, 3, 5],则输出将为9,因为我们可以在3和4时购买股票,并在7时卖出它们。然后在3时再次购买,在5时卖出。总利润(7 – 3)+(7 – 4)+(5 – 3)=9。

要解决此问题,我们将遵循以下步骤−

  • ans := 0
  • while nums不为空,do
    • top := 从nums中删除最后一个元素
    • while nums不为空并且top > nums的最后一个元素, do
      • 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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程