File tree 1 file changed +7
-7
lines changed
scripts/algorithms/S/Shortest Subarray with Sum at Least K
1 file changed +7
-7
lines changed Original file line number Diff line number Diff line change
1
+ // Runtime: 522 ms (Top 24.95%) | Memory: 104.9 MB (Top 77.23%)
1
2
class Solution {
2
3
public:
3
4
// 2-pointer doesnt work on neg elements
@@ -7,26 +8,25 @@ class Solution {
7
8
int minsize = INT_MAX;
8
9
vector<long > prefixsum (n,0 );
9
10
deque<int > dq;
10
-
11
+
11
12
prefixsum[0 ] = nums[0 ];
12
13
for (int i = 1 ;i<n;i++) prefixsum[i] = prefixsum[i-1 ] + nums[i];
13
14
14
-
15
15
for (int i = 0 ;i<n;i++){
16
- if (prefixsum[i]>=k)
16
+ if (prefixsum[i]>=k)
17
17
minsize = min (minsize,i+1 );
18
-
18
+
19
19
while (!dq.empty () && prefixsum[i]-prefixsum[dq.front ()]>=k){
20
20
minsize = min (minsize,i-dq.front ());
21
21
dq.pop_front ();
22
22
}
23
-
23
+
24
24
while (!dq.empty () && prefixsum[i]<=prefixsum[dq.back ()]){
25
25
dq.pop_back ();
26
26
}
27
-
27
+
28
28
dq.push_back (i);
29
29
}
30
30
return (minsize==INT_MAX) ? -1 : minsize;
31
31
}
32
- };
32
+ };
You can’t perform that action at this time.
0 commit comments