思路
联想到滑动窗口法。左窗口的值为0,遍历数组对数组求和,当数组的和大于等于target的时候,窗口要收缩,计算子数组的长度,并及时更新最小的长度,左窗口右移。
class Solution:def minSubArrayLen(self, target: int, nums: List[int]) -> int:if sum(nums)<target:return 0n=len(nums)ans=n i=0total=0for j in range(n):total+=nums[j]while total>=target:sub=j-i+1 #子数组的长度ans=min(ans,sub)total-=nums[i]i+=1return ans