class Solution { public: int subarraySum(vector& nums, int k) { int n = nums.size(); vector p(n+1, 0); for(int i = 1; i <= n; i++){ p[i] = p[i - 1] + nums[i - 1]; } int ret = 0; unordered_map data; for(int l = n; l; l--){ data[p[l]]++; int target = k + p[l-1]; if(data.count(target)){ ret += data[target]; } } return ret; } };