974. Subarray Sums Divisible by K
https://leetcode.com/problems/subarray-sums-divisible-by-k/
Given an array A
of integers, return the number of (contiguous, non-empty) subarrays that have a sum divisible by K
.
Example 1:
Note:
1 <= A.length <= 30000
-10000 <= A[i] <= 10000
2 <= K <= 10000
Thoughts
统计和是K的倍数的子数组个数。subarray sum => presum,DP或窗口。当presum出现相同余数时,说明中间子数组的和为K的倍数,a[i]+a[i+1]+...+a[j]=n1K+q; a[i]+a[i+1]+...+a[j]+...+a[n]=n2K+q => a[j+1]+...+a[n]=(n2−n1)K,因此用presum记录sum%K的频率,且presum添加默认的(0, 0)来处理前缀和刚好是K倍数的情况。
Code
Last updated
Was this helpful?