您好,欢迎来到飒榕旅游知识分享网。
搜索
您的当前位置:首页Day10.和可被K整除的子数组---LeeCode练习

Day10.和可被K整除的子数组---LeeCode练习

来源:飒榕旅游知识分享网

题目再现

给定一个整数数组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时

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sarr.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务