classSolution { public: intsubarraySum(vector<int> &nums, int k) { int res = 0; unordered_map<int, int> umap; vector<int> prefix_sum(nums.size() + 1, 0);
umap[0] = 1;
for (int i = 1; i < prefix_sum.size(); ++i) { prefix_sum[i] = prefix_sum[i - 1] + nums[i - 1];
// When k=0, inserting into umap will count itself res += umap[prefix_sum[i] - k]; // There may be multiple; only count historical prefix sums, not the current preSum[i].