前言
滑动窗口算法,多用于处理定长的数组问题,例如定长子数组的最大合,等等。我们今天来学习学习它。
一、什么是滑动窗口
滑动窗口更像是一种技巧,用于解决数组中的定长问题。如下图所示:
上图是滑动窗口长度为3,求解窗口中和的例子,每次滑动时,只需减去移除的元素,加上新滑到的元素即可。
下面我们做两到例题来学学它。
二、LeetCode例题
1.209. 长度最小的子数组
解题思路:
# 滑动窗口:
# 该题滑动窗口没有固定大小
# 遍历数组,用i记录 滑动起始点 用j开始滑动
# 当划过的数的总和 >= target 时 移动 i 并total 减去移除的元素
# 当total < target 时,j 继续滑动引入新的元素。
# 重复上述步骤
代码实现:
class Solution:
def minSubArrayLen(self, target: int