(1)map
class Solution {
public:
int subarraySum(vector<int>& nums, int k) {
unordered_map<int,int> mp;
nums.insert(nums.begin(),0);
int pre=0,count=0;
for(int i=0;i<nums.size();i++) {
pre+=nums[i];
if(mp.find(pre-k)!=mp.end()) {
count+=mp[pre-k];
}
mp[pre]++;
}
return count;
}
};