1 2 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; } };
|