# 0974. Subarray Sums Divisible by K ###### tags: `Leetcode` `Medium` `Prefix Sum` `HashMap` Link: https://leetcode.com/problems/subarray-sums-divisible-by-k/ ## 思路 和其他用prefixSum+HashMap的题目差不多(e.g. [1524. Number of Sub-arrays With Odd Sum](https://leetcode.com/problems/number-of-sub-arrays-with-odd-sum/)) 唯一要注意的地方是因为有可能sum是负数 在java里面余数也会是负数 所以用((sum%k+k)%k) ## Code ```java= class Solution { public int subarraysDivByK(int[] nums, int k) { int sum = 0, ans = 0; Map<Integer, Integer> map = new HashMap<>(); map.put(0,1); for(int i=0; i<nums.length; i++){ sum += nums[i]; ans += map.getOrDefault((sum%k+k)%k, 0); map.put((sum%k+k)%k, map.getOrDefault((sum%k+k)%k,0)+1); } return ans; } } ```