Leetcode Problem 560. Subarray Sum Equals K

the sliding array technique cannot be applied to an array which contains negative elements.

int subarraySum(vector<int>& nums, int k) 
    {
        int n=nums.size();
        int i=0;
        int j=0;
        int curr_sum=0;
        int cnt=0;

        unordered_map<int,int> mp;

        while(j<n)
        {
            curr_sum+=nums[j];
            if(curr_sum==k)
            {
                cnt++;
            }

            if(mp.find(curr_sum-k)!=mp.end())
            {
                cnt+=mp[curr_sum-k];
            }

            mp[curr_sum]++;
            j++;
        }

        return cnt;
    }