Number of Sub-arrays with Sum = k

Created
Tags
int Sum(int arr[], int n, int sum = 1)
{
    unordered_map<int, int> prevSum;
    int res = 0;

    int curr_sum = 0;
    for (int i = 0; i < n; i++)
    {
        curr_sum += arr[i];

        if (curr_sum == sum) res++;

        if (prevSum.find(curr_sum - sum) != prevSum.end())
            res += (prevSum[curr_sum - sum]);

        prevSum[curr_sum]++;
    }

    return res;
}