Data Structures19 sections · 729 units
Open in Course

Subarray Sum - Implementation

Complete solution

Here's the solution:

function subarraySum(nums, k)
    prefixSum := 0
    count := 0
    freq := {0: 1}  // hash map with initial entry

    for each num in nums
        prefixSum := prefixSum + num

        // Count subarrays ending here with sum k
        target := prefixSum - k
        if target in freq
            count := count + freq[target]

        // Update frequency map
        if prefixSum in freq
            freq[prefixSum] := freq[prefixSum] + 1
        else
            freq[prefixSum] := 1

    return count

Time: O(n)O(n). Space: O(n)O(n).