Bird
Raised Fist0
DSA C++programming~5 mins

Subarray Sum Equals K Using Hash Map in DSA C++ - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
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. This helps us 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 processing the array?
Because a cumulative sum of 0 has occurred once before starting, which helps count subarrays that start from index 0 and sum to k.
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, not relying on positive-only sums.
Click to reveal answer
beginner
What is the time complexity of the subarray sum equals k algorithm using a hash map?
The time complexity is O(n), where n is the length of the array, because each element is processed once and hash map operations are O(1) on average.
Click to reveal answer
What does the hash map store in the subarray sum equals k problem?
ACumulative sums and their counts
BIndividual elements and their indices
CSubarray lengths
DOnly sums equal to k
Why do we check if (current_sum - k) exists in the hash map?
ATo reset the cumulative sum
BTo find the maximum subarray length
CTo find if a subarray ending at current index sums to k
DTo count negative numbers
What initial value is added to the hash map before processing the array?
A{k:1}
B{-k:1}
C{} (empty)
D{0:1}
Can this algorithm handle arrays with negative numbers?
AYes, because it uses cumulative sums and hash map lookups
BNo, it only works with positive numbers
COnly if k is positive
DOnly if the array is sorted
What is the time complexity of this algorithm?
AO(n^2)
BO(n)
CO(log n)
DO(1)
Explain how a hash map helps find the number of subarrays that sum to k.
Think about how prefix sums and their frequencies relate to subarray sums.
You got /4 concepts.
    Describe the steps to implement the subarray sum equals k algorithm using a hash map.
    Focus on how the cumulative sum and hash map interact 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 keep track of the maximum subarray length
      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

      1. Step 1: Understand the problem goal

        The problem requires finding subarrays whose sums equal a target value k.
      2. Step 2: Role of hash map in solution

        The hash map stores cumulative sums and their counts to quickly check if a previous sum exists that forms a subarray summing to k.
      3. Final Answer:

        To store cumulative sums and their frequencies for quick lookup -> Option D
      4. Quick Check:

        Hash map stores sums = D [OK]
      Hint: Hash map tracks sums to find subarrays fast [OK]
      Common Mistakes:
      • Using hash map to sort elements
      • Storing array elements as keys instead of sums
      • Trying to track max length instead of counts
      2. Which of the following is the correct C++ syntax to declare a hash map for storing int keys and values?
      easy
      A. std::unordered_map map;
      B. std::map<int> map;
      C. unordered_map map;
      D. std::hash_map map;

      Solution

      1. Step 1: Identify correct hash map declaration

        In C++, std::unordered_map<Key, Value> is used for hash maps.
      2. Step 2: Check syntax correctness

        std::unordered_map map; uses correct template syntax and namespace. Others have syntax errors or wrong types.
      3. Final Answer:

        std::unordered_map map; -> Option A
      4. Quick Check:

        Correct unordered_map syntax = A [OK]
      Hint: Use std::unordered_map for hash maps [OK]
      Common Mistakes:
      • Missing template brackets <>
      • Using std::map instead of unordered_map for hash map
      • Wrong order of template parameters
      3. What will be the output of the following C++ code snippet?
      std::vector<int> nums = {1, 2, 3};
      int k = 3;
      int count = 0;
      std::unordered_map prefixSumCount;
      prefixSumCount[0] = 1;
      int sum = 0;
      for (int num : nums) {
          sum += num;
          if (prefixSumCount.find(sum - k) != prefixSumCount.end()) {
              count += prefixSumCount[sum - k];
          }
          prefixSumCount[sum]++;
      }
      std::cout << count << std::endl;
      medium
      A. 2
      B. 1
      C. 3
      D. 0

      Solution

      1. Step 1: Calculate prefix sums and counts

        Prefix sums: 1, 3, 6. Check if (sum - k) exists in map: - sum=1: 1-3=-2 not found - sum=3: 3-3=0 found, count=1 - sum=6: 6-3=3 found, count=1+1=2
      2. Step 2: Final count of subarrays with sum k

        Count is 2 because subarrays [1,2] and [3] sum to 3.
      3. Final Answer:

        2 -> Option A
      4. Quick Check:

        Subarrays summing to 3 = 2 [OK]
      Hint: Track prefix sums and check sum-k in map [OK]
      Common Mistakes:
      • Not initializing prefixSumCount[0] = 1
      • Incorrectly updating count
      • Confusing sum and sum-k keys
      4. Identify the bug in the following code snippet for counting subarrays summing to k:
      int subarraySum(std::vector<int>& nums, int k) {
          std::unordered_map map;
          int count = 0, sum = 0;
          for (int num : nums) {
              sum += num;
              if (map.find(sum - k) != map.end()) {
                  count += map[sum - k];
              }
              map[sum] = 1;
          }
          return count;
      }
      medium
      A. count should be incremented by 1 only
      B. sum should be reset to 0 inside the loop
      C. map[sum] should be incremented, not set to 1
      D. map should be a vector instead of unordered_map

      Solution

      1. Step 1: Analyze map update logic

        Setting map[sum] = 1 overwrites previous counts, losing frequency data.
      2. Step 2: Correct way to update map

        We must increment map[sum] to count all occurrences of the prefix sum.
      3. Final Answer:

        map[sum] should be incremented, not set to 1 -> Option C
      4. Quick Check:

        Increment map[sum] to track frequencies [OK]
      Hint: Increment map[sum] to count frequencies, not overwrite [OK]
      Common Mistakes:
      • Overwriting map[sum] instead of incrementing
      • Resetting sum inside loop incorrectly
      • Using wrong data structure for map
      5. Given an 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 count.
      hard
      A. 3
      B. 5
      C. 4
      D. 6

      Solution

      1. Step 1: Calculate prefix sums and track counts

        Prefix sums: 3,7,14,16,13,14,18,20.
        Map checks (sum-k found):
        - sum=7: 0 (+1) -> count=1
        - sum=14: 7 (+1) -> count=2
        - sum=14 (2nd): 7 (+1) -> count=3
        - sum=20: 13 (+1) -> count=4
        - sum=18: 11 (+1) -> count=5 (Note: 11 is sum-k for k=7 at sum=18, check if 11 exists in map)
      2. Step 2: Final count of subarrays

        Total 5 subarrays: [3,4], [7], [7,2,-3,1], [1,4,2], and [4,7,2,-3,-3].
      3. Final Answer:

        5 -> Option B
      4. Quick Check:

        Count of subarrays with sum 7 = 5 [OK]
      Hint: Track prefix sums and count matches for sum-k [OK]
      Common Mistakes:
      • Not incrementing count for multiple occurrences
      • Missing negative numbers effect on sums
      • Incorrect prefix sum updates
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard