Subarray Sum Equals K Visualization & Animation
Counts subarrays with sum exactly equal to k using prefix sums and a HashMap; O(n) time and space.
## What is it?
Find the total number of contiguous subarrays whose elements sum to exactly `k`. Uses a prefix sum combined with a HashMap for an O(n) solution.
## How it works
- Maintain a running `prefixSum = 0` and a HashMap `count` initialized with `{0: 1}`
- For each element:
- `prefixSum += arr[i]`
- If `prefixSum - k` is in the map → add its count to the result (a subarray ending here sums to k)
- Increment `count[prefixSum]` in the map
- Return result
**Why:** `sum(l, r) = k` iff `prefix[r+1] - prefix[l] = k` iff `prefix[l] = prefix[r+1] - k`
## When to use
- Count subarrays with a target sum (LeetCode 560)
- Count subarrays with at most k distinct elements
- Any "count subarrays with sum constraint" problem
## Key Points
- O(n) time and space
- The `{0: 1}` initialization handles subarrays starting from index 0
- Works for negative numbers (unlike sliding window which requires non-negative values)
Category: algorithms
Difficulty: intermediate
- prefix-sum
Time Complexity: O(n)
Space Complexity: O(n)
View Subarray Sum Equals K VisualizationSubarray Sum Equals K
intermediateCounts subarrays with sum exactly equal to k using prefix sums and a HashMap; O(n) time and space.
1
0
2
1
3
2
-2
3
2
4
Current index
Array element
prefixSum added to map
Target found (hit)
Initialise: prefixSum = 0, map = {0: 1}. The seed "0" accounts for subarrays starting at index 0.
1 / 16