Skip to content

Commit 5bc279e

Browse files
author
Hieu Luong
committed
Solve Problem 862 - Shortest Subarray with Sum at Least K
1 parent 0530e26 commit 5bc279e

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package monotone;
2+
3+
import java.util.Deque;
4+
import java.util.LinkedList;
5+
6+
public class Problem862_ShortestSubarrayWithSumAtLeastK {
7+
8+
public int shortestSubarray(int[] A, int K) {
9+
// B[j] - B[i] >= K ---> find smallest (j-i);
10+
Deque<Integer> deque = new LinkedList<>();
11+
int n = A.length, res = n+1, B[] = new int[n+1];
12+
13+
for (int i = 0; i < n; i++) B[i+1] += B[i] + A[i];
14+
15+
for (int i = 0; i < n+1; i++) {
16+
while (!deque.isEmpty() && B[i] - B[deque.peekFirst()] >= K) {
17+
res = Math.min(res, i-deque.pollFirst());
18+
}
19+
while (!deque.isEmpty() && B[i] <= B[deque.peekLast()]) {
20+
deque.pollLast();
21+
}
22+
deque.addLast(i);
23+
}
24+
25+
return res == n+1 ? -1 : res;
26+
}
27+
}

0 commit comments

Comments
 (0)