跳到主要内容

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

链接:974.和可被K整除的子数组
难度:Medium
标签:数组、哈希表、前缀和
简介:给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。

题解 1 - typescript

  • 编辑时间:2020-05-27
  • 执行用时:96ms
  • 内存消耗:39.7MB
  • 编程语言:typescript
  • 解法介绍:遍历一遍,O(n),遍历到该值时累加,然后判断是否能够整除,若不能则判断所相差数,存入数组,若相差数在数组中不为 1 则累加数量,总思想:前面 i 和与前面 j 和余数相同,相减必可被整除。
var subarraysDivByK = function (A: number[], K: number): number {
const arr: number[] = new Array(K).fill(0);
let sum = 0;
let count = 0;
for (const num of A) {
sum += num;
if (sum % K === 0) count++;
const y = (K - (sum % K)) % K;
if (arr[y] !== 0) count += arr[y];
arr[y] += 1;
}
return count;
};