/*
Time: O(n)
Space: O(1)
*/

func minSubArrayLen(target int, nums []int) int {
	minSize := len(nums) + 1
	L := 0
	curSum := 0

	for R := range nums {
		curSum += nums[R]
		for curSum >= target {
			if R+1-L < minSize {
				minSize = R + 1 - L
			}
			curSum -= nums[L]
			L += 1
		}
	}
	if minSize == len(nums)+1 {
		return 0
	}
	return minSize
}