每日一题|1497. 检查数组对是否可以被 k 整除|两数之和的模运算
两数之和模运算的原理
两个数字x,y
的和对k
取模,等于每个数字分别对k取模的和。
(x + y) % k = (x % k) + (y % k)
解题思路
创建一个k长度
的数组mod
,统计数组每一个数字对k取模结果的个数之和
。
那么,如果该数组满足要求,对k取模为m1的数字个数必然等于
对k取模为m2的数字个数。其中k = m1 + m2
。
所以用any对整个数组进行检查,如果有不满足的之间返回False。
最后再检查取模为0的个数是否是偶数,mod[0] % 2 == 0
。
class Solution:def canArrange(self, arr: List[int], k: int) -> bool:mod = [0] * kfor i in arr:mod[i % k] += 1if any(mod[i] != mod[k - i] for i in range(1, k// 2 + 1)):return Falsereturn mod[0] % 2 == 0