class Solution:
def subarraysDivByK(self, nums: List[int], k: int) -> int:
n, res = len(nums), 0
for i in range(n):
curSum = 0
for j in range(i, n):
curSum += nums[j]
if curSum % k == 0:
res += 1
return resclass Solution:
def subarraysDivByK(self, nums: List[int], k: int) -> int:
prefix_sum = 0
res = 0
prefix_cnt = defaultdict(int)
prefix_cnt[0] = 1
for n in nums:
prefix_sum += n
remain = prefix_sum % k
res += prefix_cnt[remain]
prefix_cnt[remain] += 1
return resclass Solution:
def subarraysDivByK(self, nums: List[int], k: int) -> int:
count = [0] * k
count[0] = 1
prefix = res = 0
for num in nums:
prefix = (prefix + num + k) % k
res += count[prefix]
count[prefix] += 1
return res