-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy path862.cpp
More file actions
22 lines (21 loc) · 703 Bytes
/
862.cpp
File metadata and controls
22 lines (21 loc) · 703 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
public:
int shortestSubarray(vector<int>& nums, int k) {
int n = nums.size();
vector<long long> prefixSum(n + 1, 0);
for (int i = 0; i < n; ++i) {
prefixSum[i + 1] = prefixSum[i] + nums[i];
}
deque<int> dq;
int res = INT_MAX;
for (int i = 0; i <= n; ++i) {
while (!dq.empty() && prefixSum[dq.back()] > prefixSum[i]) dq.pop_back();
while (!dq.empty() && prefixSum[i] - prefixSum[dq.front()] >= k) {
res = min(res, i - dq.front());
dq.pop_front();
}
dq.push_back(i);
}
return res == INT_MAX ? -1 : res;
}
};