个人技术博客
菜单
← 返回文章列表

算法

滑动窗口学习笔记

从边界条件出发,记录一次滑动窗口问题的拆解过程。

标签:Python 滑动窗口

先确认窗口的含义

滑动窗口适合处理连续区间问题。动手写代码前,先明确窗口左、右边界分别代表什么,以及窗口何时应该收缩。

一个简单的思考顺序是:

  • 先扩展右边界,让窗口获得新的元素。
  • 当窗口不再满足约束时,移动左边界。
  • 每次边界变化后,更新当前答案。

约束条件比循环形式更重要。把它写成一句可以验证的话,代码会更容易检查。

left = 0
for right, value in enumerate(values):
    window.add(value)
    while not window.is_valid():
        window.remove(values[left])
        left += 1
    answer = max(answer, right - left + 1)