Loading

Quipoin Menu

Learn • Practice • Grow

data-structure-with-java / Subarray Sum with HashMap
tutorial

Subarray Sum with HashMap

The subarray sum equals K problem asks: find number of contiguous subarrays whose sum equals a given target K. This can be solved efficiently using prefix sums and a HashMap in O(n) time.

Concept:
Let prefix sum up to index i be sum[i] = arr[0] + ... + arr[i]. The sum of subarray from index j+1 to i is sum[i] - sum[j]. We want sum[i] - sum[j] = K → sum[j] = sum[i] - K. So for each i, we count how many previous prefix sums equal sum[i] - K.

Java implementation:


public static int subarraySum(int[] nums, int k) {
Map map = new HashMap<>();
map.put(0, 1); // base case: sum 0 appears once
int count = 0, sum = 0;
for (int num : nums) {
sum += num;
int target = sum - k;
count += map.getOrDefault(target, 0);
map.put(sum, map.getOrDefault(sum, 0) + 1);
}
return count;
}

Variants:
  • Longest subarray with sum K: store first occurrence of each prefix sum.
  • Zero sum subarray: check if any prefix sum repeats or becomes zero.
  • Subarray sum divisible by K: use modulo and count frequencies.
Two Minute Drill
  • Subarray sum equals K uses prefix sum + HashMap.
  • For each prefix sum, count previous prefix sums equal to current sum - K.
  • Initialize map with (0,1) to handle subarrays starting at index 0.
  • Time O(n), space O(n).
  • Critical technique for many subarray problems.

Need more clarification?

Drop us an email at career@quipoinfotech.com