📖 Scenario: You are analyzing daily sales data for a small store. You want to find how many continuous days had sales that add up exactly to a target number.
🎯 Goal: Build a program that counts the number of continuous subarrays in a list of daily sales that sum up to a given target value using a hash map.
📋 What You'll Learn
Create an array called sales with the exact values [1, 2, 3, 4, 2]
Create a variable called target and set it to 5
Use a for loop with index i to iterate over sales
Use a hash map (JavaScript object) called prefixSums to store counts of prefix sums
Calculate the number of continuous subarrays that sum to target
Print the final count
💡 Why This Matters
🌍 Real World
Finding continuous periods where sales meet a target helps businesses analyze performance and plan promotions.
💼 Career
This technique is useful in data analysis, software development, and coding interviews to solve subarray sum problems efficiently.
Progress0 / 4 steps
1
Create the sales data array
Create an array called sales with these exact values: [1, 2, 3, 4, 2]
DSA Javascript
Hint
Use const sales = [1, 2, 3, 4, 2]; to create the array.
2
Set the target sum value
Create a variable called target and set it to 5
DSA Javascript
Hint
Use const target = 5; to set the target sum.
3
Calculate the count of subarrays summing to target
Create a variable called count and set it to 0. Create a variable called currentSum and set it to 0. Create an object called prefixSums and initialize it with {0: 1}. Use a for loop with variable i to iterate over sales. Inside the loop, add sales[i] to currentSum. Check if currentSum - target exists as a key in prefixSums. If yes, add its value to count. Then, add or update currentSum in prefixSums by increasing its count by 1.
DSA Javascript
Hint
Use a hash map to store counts of prefix sums and update count when currentSum - target is found.
4
Print the result
Print the value of count using console.log(count)
DSA Javascript
Hint
Use console.log(count); to display the final count.
Practice
(1/5)
1. What is the main purpose of using a hash map in the Subarray Sum Equals K problem?
easy
A. To reverse the array for easier traversal
B. To sort the array elements before processing
C. To store the original array elements as keys
D. To store cumulative sums and their frequencies for quick lookup
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 and their counts to quickly check if a previous sum exists that forms a subarray summing to k.
Final Answer:
To store cumulative sums and their frequencies for quick lookup -> Option D
Quick Check:
Hash map stores sums = D [OK]
Hint: Hash map tracks sums to find subarrays fast [OK]
Common Mistakes:
Thinking hash map sorts elements
Using hash map to store array elements directly
Ignoring cumulative sums concept
2. Which of the following is the correct syntax to initialize a JavaScript Map to store cumulative sums in the Subarray Sum Equals K problem?
In JavaScript, a Map is created using new Map() constructor.
Step 2: Check options for correct syntax
const map = {}; uses object literal {} which is not a Map. const map = Map();: Map() misses new. const map = new Map();: new Map() is correct. const map = new map();: new map() uses invalid lowercase constructor.
Final Answer:
const map = new Map(); -> Option A
Quick Check:
Map initialization = new Map() [OK]
Hint: Use 'new Map()' to create a Map in JavaScript [OK]
Common Mistakes:
Omitting 'new' keyword
Using object literal instead of Map
Incorrect capitalization of Map
3. What will be the output of the following code snippet?
function subarraySum(nums, k) {
let count = 0, sum = 0;
const map = new Map();
map.set(0, 1);
for (let 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. 3
B. 1
C. 2
D. 0
Solution
Step 1: Trace cumulative sums and map updates
nums = [1,2,3], k=3 sum=0 initially, map={0:1} Iteration 1: sum=1, sum-k= -2 (not in map), map={0:1,1:1} Iteration 2: sum=3, sum-k=0 (in map with count 1), count=1, map={0:1,1:1,3:1} Iteration 3: sum=6, sum-k=3 (in map with count 1), count=2, map={0:1,1:1,3:1,6:1}
Step 2: Calculate final count
Count of subarrays summing to 3 is 2: [1,2] and [3].
Final Answer:
2 -> Option C
Quick Check:
Subarrays with sum 3 = 2 [OK]
Hint: Track sums and counts in map to find subarrays fast [OK]
Common Mistakes:
Not initializing map with (0,1)
Forgetting to add counts from map
Incorrect sum-k calculation
4. Identify the bug in the following code for Subarray Sum Equals K and choose the correct fix.
function subarraySum(nums, k) {
let count = 0, sum = 0;
const map = new Map();
for (let 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.set to map.add inside loop
B. Initialize map with map.set(0, 1) before loop
C. Remove the if condition checking map.has(sum - k)
D. Initialize count to 1 instead of 0
Solution
Step 1: Identify missing initialization
The map must start with sum 0 having count 1 to handle 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.
Final Answer:
Initialize map with map.set(0, 1) before loop -> Option B
Quick Check:
Start map with (0,1) fixes bug [OK]
Hint: Always initialize map with (0,1) before loop [OK]
Common Mistakes:
Not initializing map with (0,1)
Using map.add instead of map.set
Removing essential if condition
5. Given the array nums = [3, 4, 7, 2, -3, 1, 4, 2] and k = 7, how many subarrays sum to k? Use the hash map approach to find the answer.
hard
A. 4
B. 5
C. 3
D. 6
Solution
Step 1: Calculate cumulative sums and track counts