滑动窗口模板 leetcode 209题
""" 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 输入:target = 7, nums = [2,3,1,2,4,3] 输出:2 解释:子数组 [4,3] 是该条件下的长度最小的子数组。 """ def minSubArrayLen(target,nums): n = len(nums) left = 0 #左指针 right = 0#右指针 result = 0#当前结果 bestresult = 0# 最后的结果 if n == 0: return 0 while (right < n):# 右指针小于数组的长度 result = result + nums[right] # 更新当前结果 while (result >= target):#当当前结果比target 要大的时候,缩小窗口, 左指针右移 if (right-left+1 < bestresult) or bestresult==0:# 更新结果 bestresult = right - left +1 result = result - nums[left]#移除左指针对应的元素, 所以窗口 left = left +1 right = right +1#右指针右移 return bestresult print(minSubArrayLen(7,[2,3,1,2,4,3]))