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