题意ref{:target=”_blank”}
前缀和的应用
C++ 代码
class Solution {
public:
int subarraySum(vector<int>& nums, int k) {
int n = nums.size();
unordered_map<int,int> dict;
int sum = 0;
dict[0] = 1;
int res = 0;
for(int i=0; i<n; ++i) {
sum += nums[i];
int target = sum - k;
res += dict[target];
// 先统计再更新dict
dict[sum]++;
}
return res;
}
};