5.27——974. 和可被 K 整除的子数组

974. 和可被 K 整除的子数组

给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。

示例:
输入:A = [4,5,0,-2,-3,1], K = 5
输出:7
解释:
有 7 个子数组满足其元素之和可被 K = 5 整除:
[4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3], [-2, -3]

 

1.解题思路

这道题和上一篇大同小异(主要是560那道做的时候没想出来就放弃了,看到今天这题才想起把560给做了)。都是 前缀和 + 哈希表 的思想,前缀和的思路和上一篇一样,懒得复制粘贴了。

这道题不一样的地方:

①哈希表以 前缀和 mod K 为键;以 出现的次数 为值

②用了数学中的同余定理,即(a - b) mod K ==> a mod K = b mod K这道题里,假设数组元素 i 的前缀和的余数 m = 5,且 hmp[m] =  hmp[5] = 3 ,根据同余定理,以 i 为结尾的满足条件的子数组可以组成 3 个

 

2.源码

posted @ 2020-05-27 20:33  xiaoqichaoren  阅读(152)  评论(0)    收藏  举报