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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP