给定一个整数数组A,返回其中元素之和可被K整除的(连续,非空)子数组的数目。
class Solution:
def subarraysDivByK(self, A: List[int], K: int) -> int:
d={0:1}
s,a=0,0
for f in A:
s+=f
p=s%K
q=d.get(p,0)
a+=q
d[p]=q+1
return a
代码思想:
我们假设p[i]是前i个数字的和,这样我们计算(i,j)之间所有数字的值时,就可以直接用p[j]-p[i-1]。
这时,只需要求出:(p[j]-p[i-1])%K=0,根据同余定律,得到:p[j]%K=p[i-1]%K
根据上面的公式,我们只用在字典中存入前n个数字之和与K的余数
最开始设置的{0:1}时为了当前缀与K的余为0时
因篇幅问题不能全部显示,请点此查看更多更全内容