---
# System prepended metadata

title: Leetcode 209. Minimum Size Subarray Sum
tags: [Leetcode]

---

[link](https://leetcode.com/problems/minimum-size-subarray-sum/)

---

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 <= 109
- 1 <= nums.length <= 105
- 1 <= nums[i] <= 104

---

The function works by maintaining a sliding window with variable size. The pointer L points to the beginning of the subarray and the pointer R points to the end of the subarray. The function starts by initializing L to 0 and total to 0. Then, the function iterates over the elements of nums starting from index R. For each element, the function adds the element to total. If total is greater than or equal to target, the function updates res to the minimum of res and R - L + 1. Then, the function subtracts the first element from total and increments L. The function repeats steps 3-5 until the end of nums is reached.

#### Solution 1
```python=
class Solution:
    def minSubArrayLen(self, target: int, nums: List[int]) -> int:
        L, total = 0, 0
        res = len(nums) + 1

        for R in range(len(nums)):
            total += nums[R]
            while total >= target:
                res = min(res, R - L + 1)
                total -= nums[L]
                L += 1
        
        return 0 if res == (len(nums) + 1) else res
```
O(T): O(n)
O(S): O(1)
