滑动窗口

6/14/2022 滑动窗口

# 滑动窗口

滑动窗口是快慢指针的一种特殊形式,类似一个窗口一样移动。与快慢指针的一个区分点是,滑动窗口的左指针是依次移动,一般不存在跳跃式移动。

滑动窗口是对暴力解法的一种优化剪枝,一般能使时间复杂度优化到O(n)。

滑动窗口内容的题目一般分为四类:

  • 定长,滑动窗口为固定长度
  • 不定长度,滑动窗口为不定长长度
  • 计数,使用滑动窗口解决计数类问题
  • 数据结构,需要使用数据结构来维护窗口性质

对这四类问题再次细分,可以得到:

  • 基础版,滑动窗口基础分为:定长和不定长两种形式,虽然不定长的写法可以包括定长,但是定长的写法效率更高点。
  • 进阶版,滑动窗口进阶有两种类型:计数和数据结构。计数类问题主要解决窗口内计数相关问题(这里问题通常也可以用动态规划来解决);有些问题需要对窗口使用特定的数据结构,比如堆、树等,即 滑动窗口+特定数据结构

这里强烈推荐完成 力扣 滑动窗口和双指针专题 (opens new window),专题写的很不错,本文章为该专题的总结。

本文内容分为四个章节:

Last Updated: 6/23/2022, 5:33:14 PM