What is the main idea behind using a hash map to find subarrays with sum equal to k?
We store the cumulative sums and their frequencies in a hash map to quickly find if a subarray with sum k exists by checking if (current_sum - k) has appeared before.
Click to reveal answer
beginner
In the context of subarray sum equals k, what does the key and value represent in the hash map?
The key is a cumulative sum up to a certain index, and the value is how many times this sum has appeared so far.
Click to reveal answer
intermediate
Why do we initialize the hash map with {0: 1} before iterating the array?
Because a cumulative sum of 0 has appeared once before starting, which helps count subarrays that start from index 0 and sum to k.
Click to reveal answer
intermediate
What is the time complexity of the subarray sum equals k algorithm using a hash map?
The time complexity is O(n) because we traverse the array once and perform constant time hash map operations.
Click to reveal answer
intermediate
How does the algorithm handle negative numbers in the array?
It works correctly with negative numbers because it uses cumulative sums and hash map lookups, which do not rely on positive-only values.
Click to reveal answer
What does the hash map store in the subarray sum equals k problem?
AIndividual array elements
BCumulative sums and their counts
CIndices of subarrays
DSum of all elements
✗ Incorrect
The hash map stores cumulative sums as keys and how many times they appear as values.
Why do we check if (current_sum - k) exists in the hash map?
ATo find the largest element
BTo count negative numbers
CTo reset the sum
DTo find if a subarray sums to k ending at current index
✗ Incorrect
If (current_sum - k) exists, it means a subarray summing to k ends at the current index.
What initial value is set in the hash map before processing the array?
A{0: 1}
B{k: 1}
C{} (empty)
D{-1: 0}
✗ Incorrect
We initialize with {0: 1} to count subarrays starting at index 0.
What is the time complexity of this algorithm?
AO(n)
BO(n^2)
CO(log n)
DO(1)
✗ Incorrect
The algorithm runs in O(n) time by scanning the array once.
Does this algorithm work with negative numbers in the array?
AOnly if k is positive
BNo, it only works with positive numbers
CYes, it works correctly
DOnly if array has no zeros
✗ Incorrect
It works with negative numbers because it uses cumulative sums and hash map lookups.
Explain how a hash map helps find the number of subarrays that sum to k.
Think about how sums up to different indices relate to subarray sums.
You got /4 concepts.
Describe the step-by-step process of the subarray sum equals k algorithm using a hash map.
Focus on how the algorithm updates and uses the hash map during iteration.
You got /4 concepts.
Practice
(1/5)
1. What is the main purpose of using a hash map in the Subarray Sum Equals K problem?
easy
A. To store cumulative sums and their frequencies for quick lookup
B. To sort the array elements before processing
C. To store the original array elements as keys
D. To reverse the array for easier traversal
Solution
Step 1: Understand the problem goal
The problem requires finding subarrays whose sums equal a target value k.
Step 2: Role of hash map in solution
A hash map stores cumulative sums seen so far and their counts, enabling quick checks if a subarray sum equals k.
Final Answer:
To store cumulative sums and their frequencies for quick lookup -> Option A
Quick Check:
Hash map stores sums = quick lookup [OK]
Hint: Hash map tracks sums to find subarrays fast [OK]
Common Mistakes:
Thinking hash map stores array elements as keys
Assuming sorting is needed
Using hash map to reverse array
2. Which of the following TypeScript code snippets correctly initializes the hash map for the Subarray Sum Equals K problem?
easy
A. const map = new Map(); map.set(0, 1);
B. const map = new Map(); map.set('0', '1');
C. const map = new Map(); map.set(0, []);
D. const map = new Map(); map[0] = 1;
Solution
Step 1: Identify correct Map initialization
We need a map from number to number to store cumulative sums and their counts.
Step 2: Check initialization correctness
const map = new Map(); map.set(0, 1); correctly creates a Map and sets sum 0 count to 1, which is standard for this problem.
Final Answer:
const map = new Map(); map.set(0, 1); -> Option A
Quick Check:
Map with 0->1 set = correct init [OK]
Hint: Use Map and set(0,1) to start [OK]
Common Mistakes:
Using string keys instead of number keys
Initializing map with arrays as values
Using object syntax instead of Map methods
3. What is the output of the following TypeScript code snippet?
function subarraySum(nums: number[], k: number): number {
const map = new Map();
map.set(0, 1);
let sum = 0, count = 0;
for (const num of nums) {
sum += num;
if (map.has(sum - k)) {
count += map.get(sum - k)!;
}
map.set(sum, (map.get(sum) || 0) + 1);
}
return count;
}
console.log(subarraySum([1, 2, 3], 3));
medium
A. 0
B. 1
C. 3
D. 2
Solution
Step 1: Trace cumulative sums and map updates
nums = [1,2,3], k=3
- sum=1, map has (1-3)=-2? No, map updated with sum=1 count=1
- sum=3, map has (3-3)=0? Yes, count += map.get(0)=1, map updated sum=3 count=1
- sum=6, map has (6-3)=3? Yes, count += map.get(3)=1, map updated sum=6 count=1
Total count=2
Step 2: Confirm final count returned
Function returns 2, meaning two subarrays sum to 3: [1,2] and [3].
Final Answer:
2 -> Option D
Quick Check:
Subarrays [1,2] and [3] sum to 3 = 2 [OK]
Hint: Count increments when (sum - k) found in map [OK]
Common Mistakes:
Counting only single elements equal to k
Not updating map counts correctly
Ignoring multiple subarrays with same sum
4. Identify the bug in this TypeScript code for Subarray Sum Equals K and select the fix:
function subarraySum(nums: number[], k: number): number {
const map = new Map();
let sum = 0, count = 0;
for (const num of nums) {
sum += num;
if (map.has(sum - k)) {
count += map.get(sum - k)!;
}
map.set(sum, (map.get(sum) || 0) + 1);
}
return count;
}
medium
A. Change map to an object instead of Map
B. Initialize map with map.set(0, 1) before loop
C. Remove the if condition checking map.has(sum - k)
D. Initialize sum and count to 1 instead of 0
Solution
Step 1: Identify missing initialization
The map must start with sum 0 count 1 to count subarrays starting at index 0.
Step 2: Fix by adding map.set(0, 1)
Adding map.set(0, 1) before the loop ensures correct counting of subarrays that start from the beginning.
Final Answer:
Initialize map with map.set(0, 1) before loop -> Option B
Quick Check:
map.set(0,1) needed for correct count [OK]
Hint: Always set map(0) = 1 before loop [OK]
Common Mistakes:
Forgetting to initialize map with 0 sum
Removing necessary condition checks
Changing variable initial values incorrectly
5. Given the array nums = [3, 4, 7, 2, -3, 1, 4, 2] and k = 7, how many subarrays sum to k using the hash map approach?
hard
A. 5
B. 3
C. 4
D. 6
Solution
Step 1: Calculate cumulative sums and track counts
nums = [3,4,7,2,-3,1,4,2], k=7
- sum=3, map={0:1}, no (3-7)=-4
- sum=7, map has (7-7)=0, count=1
- sum=14, map has (14-7)=7, count=1+1=2
- sum=16, map has (16-7)=9 no
- sum=13, map has (13-7)=6 no
- sum=14, map has (14-7)=7, count=2+1=3
- sum=18, map has (18-7)=11 no
- sum=20, map has (20-7)=13, count=3+1=4
Total count=4
Subarrays summing to 7 are:
[3,4], [7], [7,2,-3,1], [1,4,2]
Step 2: Confirm final count
After full iteration, total subarrays summing to 7 are 4.
Final Answer:
4 -> Option C
Quick Check:
Count subarrays with sum k = 4 [OK]
Hint: Track cumulative sums and count matches for (sum - k) [OK]
Common Mistakes:
Missing negative numbers affecting sums
Not counting overlapping subarrays
Ignoring multiple occurrences of same sum
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.