Subarray Sum Equals K

Overview

Medium 1 solution

Categories

ArrayHash TablePrefix Sum
package array.iterative;

import java.util.HashMap;
import java.util.Map;

public class SubarraySumEqualsK {

    public int subarraySum(int[] nums, int k) {
        Map<Integer, Integer> prefixSum = new HashMap<>();
        prefixSum.put(0, 1);

        int currSum = 0;
        int count   = 0;
        for (var num : nums) {
            currSum += num;
            count   += prefixSum.getOrDefault(currSum - k, 0);
            prefixSum.merge(currSum, 1, Integer::sum);
        }

        return count;
    }

}