Skip to content
进阶

一句话答案

滑动窗口解决子串/子数组问题:右指针扩张维护窗口状态,不满足条件时左指针收缩,适合最长/最短子串类题。

核心要点

模板: left=0, 遍历right扩张窗口 → while(需收缩) left++ → 更新答案

适用场景: 最小覆盖子串 / 无重复最长子串 / 固定窗口最大和 / 最多K个不同字符

追问与易错

追问方向:

  • 固定窗口和可变窗口的区别?
  • 窗口收缩条件怎么确定?
  • 什么题型适合滑动窗口?

易错点:

  • ❌ 滑动窗口能解决所有子串问题——有些需要 DP
  • ❌ 窗口一定是连续的——是的子数组/子串都是连续的

💡 记忆锚点

滑动窗口像伸缩尺蠖:右指针不停往右爬(扩张窗口),窗口不满足条件时左指针跟上来(收缩窗口),每次更新答案。模板三步:右扩→判断是否需要左缩→更新最优解。求最长子串时在窗口合法时更新答案,求最短子串时在窗口刚满足条件时更新答案。O(n)双指针,把暴力O(n2)降一维。