滑动窗口不能算是一种算法,而是一种方法
目的是减少while循环
解决数组中的定长问题,当然不是定长也可以用
class Solution(object):
def minSubArrayLen(self, target, nums):
"""
:type target: int
:type nums: List[int]
:rtype: int
"""
# 1.暴力法
n = len(nums)
if nums is None or n == 0:
return 0
res = n + 1
for i in range(n):
total = 0
for j in range(i, n):
total += nums[j]
if total >= target:
res = min(res, j - i + 1)
break
return 0 if res == n+1 else res
# 2.滑动窗口
n = len(nums)
if not nums or n == 0:
return 0
res = n + 1
i = 0
j = 0
total = 0
while j < n:
total += nums[j]
while total >= target:
res = min(res, j-i+1)
total -= nums[i]
i += 1
j += 1
return 0 if res == n+1 else res