From 978589b53ebdf6dfddcde845cc8ffa0cf6eee207 Mon Sep 17 00:00:00 2001 From: Prad Nukala Date: Thu, 1 Oct 2026 14:21:24 -0400 Subject: [PATCH] feat(work): add solution for LeetCode 974 Subarray Sums Divisible by K --- .../Array/974.subarray-sums-divisible-by-k.py | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 work/1/Medium/Array/974.subarray-sums-divisible-by-k.py diff --git a/work/1/Medium/Array/974.subarray-sums-divisible-by-k.py b/work/1/Medium/Array/974.subarray-sums-divisible-by-k.py new file mode 100644 index 0000000..4360cb2 --- /dev/null +++ b/work/1/Medium/Array/974.subarray-sums-divisible-by-k.py @@ -0,0 +1,55 @@ +""" +974. Subarray Sums Divisible by K +Difficulty: Medium +https://leetcode.com/problems/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. + +A subarray is a contiguous part of an array. + + + +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 +""" + + +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