class Solution:
def minSubArrayLen(self, s: int, nums: List[int]) -> int:
"""
sliding window, 2 loops
1. initialize left ptr, right ptr local sum
2. loop array, get accumutive local sum
3. when local sum >= s, move left ptr and compare with global min size (ans)
4. check if ans has changed from initiali value
"""
# time O(N) space O(1)
n = len(nums)
res = n+1
l = 0
sumSub = 0
for r in range(n):
sumSub += nums[r]
while sumSub >= s:
res = min(r-l+1,res)
sumSub -= nums[l]
l += 1
return res if res != n+1 else 0