Skip to content
prdlk
Esc
↑↓navigate↵open⌘Jpreview
On this page

974. Subarray Sums Divisible by K

Given an integer array nums and an integer k, return the number of non-empty subarrays that have a sum divisible by k

Example 1:

  • Input: nums = [4,5,0,-2,-3,1], k = 5
  • Output: 7
  • Explanation: There are 7 subarrays with a sum divisible by k = 5: [4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3], [-2, -3]

Example 2:

  • Input: nums = [5], k = 9
  • Output: 0

Constraints:

  • 1 <= nums.length <= 3 * 10^4
  • -10^4 <= nums[i] <= 10^4
  • 2 <= k <= 10^4

Solution

class Solution:
    def subarraysDivByK(self, nums: list[int], k: int) -> int:
        remainder_counts = {0: 1}
        cur_sum = 0
        count = 0

        for n in nums:
            cur_sum += n
            remainder = cur_sum % k

            if remainder in remainder_counts:
                count += remainder_counts[remainder]

            remainder_counts[remainder] = remainder_counts.get(remainder, 0) + 1

        return count

Last updated on October 1, 2026

Was this page helpful?