---
title: '209. Minimum Size Subarray Sum'
description: 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
icon: dot
topics:
  - { name: "Array", slug: "array" }
  - { name: "Binary Search", slug: "binary-search" }
  - { name: "Sliding Window", slug: "sliding-window" }
  - { name: "Prefix Sum", slug: "prefix-sum" }
issue: "https://github.com/prdlk/leetcode/issues/54"
sidebar:
  label: 'Minimum Size Subarray Sum'
  badge: 'Medium'
---

::::warning
If you have figured out the O(n) solution, try coding another solution of which the time complexity is O(n log(n)).
::::

### 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

```py
class Solution:
    def minSubArrayLen(self, target: int, nums: list[int]) -> int:
        window_sum = 0
        length = len(nums) + 1
        left = 0

        for right in range(len(nums)):
            window_sum += nums[right]
            while window_sum >= target:
                length = min(length, right - left + 1)
                window_sum -= nums[left]
                left += 1
        if length > len(nums):
            return 0
        return length
```
