滑动窗口方法一般用于处于连续子串的问题。
0. 模板
1. 209
class Solution:
def minSubArrayLen(self, s: int, nums: List[int]) -> int:
if not nums:
return 0
res = len(nums)+1
left = 0
val_sum=0
for i in range(len(nums)):
val_sum += nums[i]
if val_sum< s:
continue
elif val_sum==s:
res = min(res,i-left+1)
continue
while val_sum >= s: #注意
val_sum -= nums[left]
left += 1
res = min(res,i-left+2)
return res if res < len(nums)+1 else 0
注意边界情况处理!在 while val_sum >= s 这里val_sum等于s时也还是会回退一位,这样下面的长度是i-left-2,这样就不用再下面按sum<s 和sum==s做讨论