Cho danh sách nums và số k. Kiểm tra có thể phân hoạch nums thành các cặp sao cho tổng mỗi cặp chia hết cho k.
Ví dụ: nums=[4,7,2,5], k=6 → True (cặp (4,2) và (7,5), tổng 6 và 12 chia hết 6).
Giải thuật
- Nếu độ dài
numslẻ → False. - Đếm tần suất dư modulo
kvào mảngcount. - Số dư 0 phải có tần suất chẵn.
- Với mỗi
i = 1..k//2:count[i] == count[k-i]. - Trả về True nếu thỏa mãn tất cả.
Ví dụ minh họa
class Solution:
def solve(self, nums, k):
if len(nums) % 2:
return False
count = [0] * k
for n in nums:
count[n % k] += 1
if count[0] % 2:
return False
for i in range(1, k // 2 + 1):
if count[i] != count[k - i]:
return False
return True
ob = Solution()
nums = [4, 7, 2, 5]
k = 6
print(ob.solve(nums, k))
Đầu vào
[4, 7, 2, 5], 6
Đầu ra
True