Poison

974. Subarray Sums Divisible by K

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public int subarraysDivByK(int[] nums, int k) {
int sum = 0, res = 0;
Map<Integer, Integer> remainderToCountMap = new HashMap<>();
remainderToCountMap.put(0, 1);
for (int num : nums) {
sum += num;
int remainder = ((sum % k) + k) % k; // 此处注意处理负数的余数为负的情况
int sameCount = remainderToCountMap.getOrDefault(remainder, 0);
res += sameCount;
remainderToCountMap.put(remainder, sameCount + 1);
}

return res;
}
}
Reference

974. Subarray Sums Divisible by K