Shortest Subarray with Sum at Least K
Input: A = [1], K = 1
Output: 1Input: A = [1,2], K = 4
Output: -1Input: A = [2,-1,2], K = 3
Output: 3Last updated
Input: A = [1], K = 1
Output: 1Input: A = [1,2], K = 4
Output: -1Input: A = [2,-1,2], K = 3
Output: 3Last updated
class Solution:
def shortestSubarray(self, A: List[int], K: int) -> int:
B = [0]
for i in A:
B.append(B[-1]+i)
s = []
res = float('inf')
for i,b in enumerate(B):
if not s:
s.append(i)
else:
while s and B[s[-1]] > b: s.pop() #useless, pop out
while s and B[s[0]] <= b - K:
res = min(res,i - s[0])
s.pop(0)
s.append(i)
return res if res!= float('inf') else -1