https://leetcode.com/problems/subarray-sums-divisible-by-k/
- Prefix Sum
- Modulo
Track prefix sum % k; repeated modulos indicate subarray divisible by k.
O(n)
O(n)
import java.util.*;
class Solution {
public int subarraysDivByK(int[] nums, int k) {
Map<Integer, Integer> map = new HashMap<>();
map.put(0, 1);
int sum = 0, count = 0;
for (int n : nums) {
sum += n;
int mod = ((sum % k) + k) % k;
count += map.getOrDefault(mod, 0);
map.put(mod, map.getOrDefault(mod, 0) + 1);
}
return count;
}
}