Problem Statement:

Given an array of positive integers nums and a positive integer target, return the minimal length of a subarray whose sum is greater than or equal to target. If there is no such subarray, return 0 instead.

Example 1:

Input: target = 7, nums = [2,3,1,2,4,3] Output: 2 Explanation: The subarray [4,3] has the minimal length under the problem constraint.

Example 2:

Input: target = 4, nums = [1,4,4] Output: 1

Example 3:

Input: target = 11, nums = [1,1,1,1,1,1,1,1] Output: 0

Constraints:

1 <= target <= 10^9 1 <= nums.length <= 10^5 1 <= nums[i] <= 10^4

Solution:

class Solution {
    public int minSubArrayLen(int target, int[] nums) {
        int start = 0;
        int end = 0;
        int minLength = Integer.MAX_VALUE;
        int newTarget = target;
        while(end < nums.length){
            newTarget = newTarget - nums[end];
 
            while(newTarget <= 0){
                int windowSize = end - start + 1;
                minLength = Math.min(minLength, windowSize);
                newTarget += nums[start];
                start++;
            }
            end++;
        }
 
        return minLength == Integer.MAX_VALUE ? 0 : minLength;
    }
}