问题
求一个数组Vector中的某个子数组所有元素和
为K的个数;
分析
情况一:
数组Vector中的元素都是正数
或者都是负数
的话,可以使用滑动指针的方法
情况二:
数组元素是无序的,可以为正负任意的
。
此时可以使用通用方法:前缀和+HASH
int func(vector<int>& v,int target){
unordered_map<int,int> cap;
cap[0] = 1;
int pre = 0;
int cnt = 0;
for(int i = 0; i < v.size(); ++i){
pre += v[i];
if(cap.count(pre - target)){
cnt += cap[pre - target];
}
cap[pre]++;
}
return cnt;
}