滑动窗口题目
给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其总和大于等于 target 的长度最小的 子数组[numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。
滑动窗口的题目真的挺灵活的,之前一直以为滑动窗口就是左指针在数组最左边,右指针在最右边,但是其实滑动窗口可以是都在一侧的指针,先移动第一个指针,达成题目条件,再移动另外的指针
class Solution:
def minSubArrayLen(self, target: int, nums: List[int]) -> int:
left = 0
sums = 0
result = float(inf)
for j in range(len(nums)):
sums += nums[j]
while (sums >= target):
result = min(result,j - left + 1)
sums -= nums[left]
left += 1
if result == float(inf):
return 0
return result