滑动窗口算法通常要求数组元素为正整数,以保证窗口内元素之和随右指针移动具有单调递增性。
一、209. 长度最小的子数组

思路
以每个位置为右端点,逐步扩大窗口。当窗口内元素之和不小于目标值时,尝试缩小左端点以寻找最短子数组。
代码
class Solution:
def minSubArrayLen(self, target: int, nums: List[int]) -> int:
n = len(nums)
ans = n + 1
s = left = 0
for right, x in enumerate(nums):
s += x
while s >= target:
ans = min(ans, right - left + 1)
s -= nums[left]
left += 1
return ans if ans != n + 1 else 0


