209. Minimum Size Subarray Sum
滑动窗口
class Solution:
def minSubArrayLen(self, s: int, nums: List[int]) -> int:
left, right, size = 0, 0, len(nums) # left, right分别记录滑动窗口的左右边界,左闭右开
subsum, minlen = 0, size+1 # minlen的初始化用size+1代替正无穷
while right < size:
while right < size and subsum < s: # 找到subsum >= s的右边界
subsum += nums[right]
right += 1
# minlen = min(minlen, right-left+1)
while subsum >= s and left < size: # 当subsum >= s时,更新minlen,并逐渐收缩左边界至subsum < s
minlen = min(minlen, right - left)
subsum -= nums[left]
left += 1
if minlen == size+1:
return 0
else:
return minlen
本文详细介绍了一种名为MinimumSizeSubarraySum的问题解决方法,利用滑动窗口技巧,通过实例代码展示了如何找到数组中满足和大于等于给定值s的最小子数组长度。适合理解窗口操作在求解数组问题中的应用。
23





