Optimal Python Solution for Subarray Sum Equals K (Interview Script)
2025-10-05
The Logic
- A brute force approach checks all subarrays and is too slow.
- Prefix sums allow us to track cumulative sums efficiently.
- A hash map stores how often each prefix sum has appeared.
Implementation / Diagram
Key Invariant
If current_sum minus k has appeared before, a valid subarray ending at this index exists.
def subarraySum(nums, k):
count = 0
prefix_sum = 0
seen = {0: 1}
for num in nums:
prefix_sum += num
if prefix_sum - k in seen:
count += seen[prefix_sum - k]
seen[prefix_sum] = seen.get(prefix_sum, 0) + 1
return count