Files
leetcode/apps/docs/content/(01-linear-structures)/sliding-window/209_minimum-size-subarray-sum.mdx
T

64 lines
1.9 KiB
Plaintext

---
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"
companies:
- { name: "Microsoft", period: "Thirty Days", frequency: 67.9 }
- { name: "Meta", period: "Thirty Days", frequency: 53.8 }
- { name: "Bloomberg", period: "Three Months", frequency: 46.8 }
- { name: "Google", period: "Three Months", frequency: 45 }
- { name: "Amazon", period: "Three Months", frequency: 28.9 }
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
```