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 次檢視

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.