| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 
 | class Solution {public:
 int maxSubArrayLen(vector<int>& nums, int k) {
 int n = nums.size();
 vector<int> presum(n + 1);
 unordered_map<int, int> m{{0, 0}};
 for (int i = 1; i <= n; ++i) {
 presum[i] = presum[i - 1] + nums[i - 1];
 m[presum[i]] = max(m[presum[i]], i);
 }
 int res = 0;
 for (int i = 0; i <= n; ++i) {
 int t = presum[i] + k;
 if (m.count(t)) {
 res = max(res, m[t] - i);
 }
 }
 return res;
 }
 };
 
 |