Python程式:查詢最大K可整除子序列和
假設我們給定一個非負數列表和一個正值k。我們必須找到一個數字的最大和子序列,使得該和可以被k整除。
因此,如果輸入類似於 nums = [4, 6, 8, 2],k = 2,則輸出將為 20。
整個陣列的和是 20,可以被 2 整除。
為了解決這個問題,我們將遵循以下步驟:
numsSum := 輸入列表 nums 中值的總和
remainder := numsSum mod k
如果餘數與 0 相同,則
返回 numsSum
對列表 nums 進行排序
對於 nums 中的每個數字組合 tpl
subSeqSum := sum(tpl)
如果 subSeqSum mod k 與餘數相同,則
返回 numsSum − subSeqSum
返回 0
讓我們看看下面的實現以獲得更好的理解:
示例
from itertools import chain, combinations class Solution: def solve(self, nums, k): numsSum = sum(nums) remainder = numsSum % k if remainder == 0: return numsSum nums.sort() for tpl in chain.from_iterable(combinations(nums, r) for r in range(1, len(nums) + 1)): subSeqSum = sum(tpl) if subSeqSum % k == remainder: return numsSum − subSeqSum return 0 ob1 = Solution() print(ob1.solve([4, 6, 8, 2], 2))
輸入
[4, 6, 8, 2], 2
輸出
20
廣告