Python 中查詢列表中非鄰接元素最大和的程式


假設我們有一個名為 nums 的數字列表,我們將定義一個返回非鄰接數字最大和的函式。這裡的數字可以是 0 或負數。

因此,如果輸入像 [3, 5, 7, 3, 6],則輸出將是 16,因為我們可以取 3、7 和 6 來獲得 16。

為了解決這個問題,我們將遵循以下步驟−

  • 如果 nums 的大小 <= 2,則

    • 返回 nums 的最大值

  • noTake := 0

  • take := nums[0]

  • 對於 nums 從 1 到 nums 的大小的範圍,執行

    • take := noTake + nums[i]

    • noTake := noTake 和 take 的最大值

  • 返回 noTake 和 take 的最大值

讓我們看看下面的實現來更好地理解 −

示例

 線上演示

class Solution:
   def solve(self, nums):
      if len(nums) <= 2:
         return max(nums)
      noTake = 0
      take = nums[0]
      for i in range(1, len(nums)):
         take, noTake = noTake + nums[i], max(noTake, take)
         return max(noTake, take)
ob = Solution()
nums = [3, 5, 7, 3, 6]
print(ob.solve(nums))

輸入

[3, 5, 7, 3, 6]

輸出

16

更新時間:2020 年 10 月 9 日

730 次瀏覽

開啟你的職業生涯

完成課程獲得認證

立即開始
廣告
© . All rights reserved.