使用Python檢查陣列對是否可被k整除的程式
假設我們有一個名為nums的陣列,該陣列包含偶數個元素,還有一個值k。我們必須將nums分成恰好n/2對,使得每對的和都能被k整除。如果我們可以這樣做,則返回true,否則返回false。
因此,如果輸入類似於nums = [9,5,3,4,7,10,20,8] k = 3,則輸出將為True,因為我們可以構成如下對:(9,3), (5,7), (4,20), (8,10),所有對的和都能被3整除。
為了解決這個問題,我們將遵循以下步驟:
dp := 新列表
count:= 0
對於nums中的每個x,執行:
t:= k - (x mod k)
如果t等於k,則:
count := count + 1
否則:
將t插入dp的末尾
如果count mod 2不等於0,則:
返回False
對列表dp進行排序
low := 0
high := dp的大小 - 1
當low < high時,執行:
如果dp[low] + dp[high]不等於k,則:
返回False
low := low + 1
high := high - 1
返回True
讓我們來看下面的實現,以便更好地理解:
示例
def solve(nums, k): dp=[] count=0 for x in nums: t=k-(x % k) if t == k: count+=1 else: dp.append(t) if count % 2 != 0: return False dp.sort() low = 0 high = len(dp)-1 while low < high: if dp[low] + dp[high] != k: return False low += 1 high -= 1 return True nums = [9,5,3,4,7,10,20,8] k = 3 print(solve(nums, k))
輸入
[9,5,3,4,7,10,20,8], 3
輸出
True
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP