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;
}