Description
Submission
class Solution { public: int numSubarraysWithSum(vector<int>& nums, int goal) { int n = nums.size(); nums.insert(nums.begin(), 0); vector<int> presum(n+1); presum[0] = 0; for(int i = 1; i <= n ; ++i) { presum[i] = presum[i-1] + nums[i]; } int ret = 0; for(int i = 0; i <= n; ++i) { int right = goal + presum[i]; // right side auto it = lower_bound(presum.begin() + i + 1, presum.end(), right); for(; it != presum.end() && *it == right; ++ret, ++it); } return ret; } };