classSolution { public: intsubarraySum(vector<int> nums, int k){ int n = nums.size(); if (n == 0) { return0; } unordered_map<int, int> cumSum; int preSum = 0; cumSum.insert({0, 1}); int res = 0; for (int i = 0; i < n; ++i) { preSum += nums[i]; int target = preSum - k; if (cumSum.count(target)) { res += cumSum[target]; } cumSum[preSum]++; } return res; } }