【力扣hot100题】(009)和为K的子数组
还是太菜了(我),写了半天滑动窗口,然后看了答案又写了半天时间超限……
总之就是记录每前n个子串的和,然后使用hash存储和为某个值出现的次数,每次求得新和就看看是否存在前面新和-k的字符,有的话加上数量就行。
class Solution {
public:
int subarraySum(vector<int>& nums, int k) {
int result=0;
unordered_map<int,int> mp;
mp[0]=1;
int pre=0;
for(int i=0;i<nums.size();i++){
pre+=nums[i];
if(mp.find(pre-k)!=0) result+=mp[pre-k];
mp[pre]++;
}
return result;
}
};