/**
 * @param {number} target
 * @param {number[]} nums
 * @return {number}
 */
var minSubArrayLen = function (target, nums) {
    let minLength = Infinity;
    let leftWindow = 0;
    let currentSum = 0;

    for (let rightWindow = 0; rightWindow < nums.length; rightWindow++) {
        currentSum += nums[rightWindow];
        while (currentSum >= target) {
            minLength = Math.min(minLength, rightWindow - leftWindow + 1);
            currentSum -= nums[leftWindow];
            leftWindow++;
        }
    }
    return minLength === Infinity ? 0 : minLength;
};