Challenge - 5 Problems
Subarray Sum Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediateOutput of Subarray Sum Count
What is the output of the following C++ code that counts subarrays summing to k using a hash map?
DSA C++
int subarraySum(vector<int>& nums, int k) { unordered_map<int, int> prefixSumCount; prefixSumCount[0] = 1; int count = 0, sum = 0; for (int num : nums) { sum += num; if (prefixSumCount.find(sum - k) != prefixSumCount.end()) { count += prefixSumCount[sum - k]; } prefixSumCount[sum]++; } return count; } int main() { vector<int> nums = {1, 2, 3}; int k = 3; cout << subarraySum(nums, k) << endl; return 0; }
Attempts:
2 left
💡 Hint
Think about all continuous subarrays that sum to 3.
✗ Incorrect
The subarrays [1, 2] and [3] both sum to 3, so the count is 2.
❓ Predict Output
intermediateResult of Subarray Sum with Negative Numbers
What is the output of this code snippet counting subarrays summing to k with negative numbers?
DSA C++
int subarraySum(vector<int>& nums, int k) { unordered_map<int, int> prefixSumCount; prefixSumCount[0] = 1; int count = 0, sum = 0; for (int num : nums) { sum += num; if (prefixSumCount.find(sum - k) != prefixSumCount.end()) { count += prefixSumCount[sum - k]; } prefixSumCount[sum]++; } return count; } int main() { vector<int> nums = {1, -1, 0}; int k = 0; cout << subarraySum(nums, k) << endl; return 0; }
Attempts:
2 left
💡 Hint
Count all subarrays that sum exactly to zero.
✗ Incorrect
Subarrays [1, -1], [-1, 0], and [0] sum to 0, total 3.
🔧 Debug
advancedIdentify the Error in Subarray Sum Code
What error will this code produce when counting subarrays summing to k?
DSA C++
int subarraySum(vector<int>& nums, int k) { unordered_map<int, int> prefixSumCount; int count = 0, sum = 0; for (int num : nums) { sum += num; if (prefixSumCount.find(sum - k) != prefixSumCount.end()) { count += prefixSumCount[sum - k]; } prefixSumCount[sum]++; } return count; } int main() { vector<int> nums = {1, 2, 3}; int k = 3; cout << subarraySum(nums, k) << endl; return 0; }
Attempts:
2 left
💡 Hint
Check if prefixSumCount[0] is initialized before loop.
✗ Incorrect
The map prefixSumCount does not have prefixSumCount[0] initialized to 1, so the code misses counting subarrays starting at index 0, causing wrong count.
❓ Predict Output
advancedOutput of Subarray Sum with Large Input
What is the output of this code counting subarrays summing to k for a large input array?
DSA C++
int subarraySum(vector<int>& nums, int k) { unordered_map<int, int> prefixSumCount; prefixSumCount[0] = 1; int count = 0, sum = 0; for (int num : nums) { sum += num; if (prefixSumCount.find(sum - k) != prefixSumCount.end()) { count += prefixSumCount[sum - k]; } prefixSumCount[sum]++; } return count; } int main() { vector<int> nums(1000, 1); int k = 2; cout << subarraySum(nums, k) << endl; return 0; }
Attempts:
2 left
💡 Hint
Count how many subarrays of length 2 sum to 2 in an array of 1s.
✗ Incorrect
Each pair of consecutive 1s sums to 2. There are 999 such pairs in 1000 elements.
🧠 Conceptual
expertWhy Use Hash Map in Subarray Sum Equals K?
Which reason best explains why a hash map is used in the subarray sum equals k algorithm?
Attempts:
2 left
💡 Hint
Think about how the algorithm finds if a previous sum exists to form k.
✗ Incorrect
The hash map stores how many times each prefix sum has appeared, allowing quick checks if sum-k occurred before, which means a subarray sums to k.
