974. 和可被 K 整除的子数组(前缀和,同余hash)

249 阅读1分钟

class Solution {
    public int subarraysDivByK(int[] A, int K) {
        HashMap<Integer, Integer> map = new HashMap<>();
        map.put(0, 1);
        int sum = 0, ans = 0;
        for (int i : A) {
            sum += i;
            int remainder = (sum % K + K) % K;
            int cnt = map.getOrDefault(remainder, 0);
            ans += cnt;
            map.put(remainder, cnt + 1);
        }
        return ans;
    }
}