
1 public class Solution {
2 public int subarraySum(int[] nums, int k) {
3 int count = 0, pre = 0;
4 HashMap < Integer, Integer > map = new HashMap < > ();
5 map.put(0, 1);
6 for (int i = 0; i < nums.length; i++) {
7 pre += nums[i];
8 if (mp.containsKey(pre - k))
9 count += mp.get(pre - k);
10 mp.put(pre, mp.getOrDefault(pre, 0) + 1);
11 }
12 return count;
13 }
14 }

1 class Solution {
2 public int subarraysDivByK(int[] A, int K) {
3 //记录余数出现的次数
4 HashMap<Integer, Integer> map = new HashMap<>();
5 map.put(0,1);
6 int pre = 0;//前缀和
7 int ans = 0;
8 for(int i = 0; i < A.length; i++){
9 pre += A[i];
10 int m = (pre % K + K) % K;//余数 (负数处理)
11 int same = map.getOrDefault(m,0);
12 ans += same;
13 map.put(m,same+1);
14 }
15 return ans;
16 }
17 }