网站建设的可行性,外贸需要网站做生产车间展示,深圳香蜜湖街道香岭社区,智能网站建设报价给定一个整数数组 A#xff0c;返回其中元素之和可被 K 整除的#xff08;连续、非空#xff09;子数组的数目。
示例#xff1a;
输入#xff1a;A [4,5,0,-2,-3,1], K 5
输出#xff1a;7
解释#xff1a;
有 7 个子数组满足其元素之和可被 K 5 整除#xff1a;…给定一个整数数组 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 A.length 30000
-10000 A[i] 10000
2 K 10000前缀和逐步推出使用同余定理解决这个问题。
class Solution {
public:int subarraysDivByK(vectorint A, int K) {unordered_mapint, int record {{0, 1}};int sum 0, ans 0;for (int elem: A) {sum elem;// 注意 C 取模的特殊性当被除数为负数时取模结果为负数需要纠正int modulus (sum % K K) % K;if (record.count(modulus)) {ans record[modulus];}record[modulus];}return ans;}
};来源力扣LeetCode