SlidingWindow

滑动窗口 Sliding Window

滑动窗口一定是连续的,因此子数组类题目才能用。也有在数组两头的,一头变长一头减短。

移动窗口时变动的值最好是与两头的数据直接相关的,像是239. 滑动窗口最大值中取的是最大值,因此需要花$O(k)$的时间去获取最大值,总体为$O(n*k)$时间复杂度,对于Hard题是TEL的。

一般滑动窗口都是对容器内元素的__个数或者种类__进行限制,例如窗口内不能出现重复元素,元素种类只能有$k$种等。

固定大小滑动窗口

这种是最简单的,只需要对窗口进出元素进行简单运算即可

对窗口内元素的个数、种类、和或乘积等进行限制

__最大最长__,因此每次增长时,窗口内可能不满足条件,要缩小窗口到满足条件才能收集$res$.

子串“匹配”

通常用一个计数器$differentNum$来判断是否匹配,不用每次都遍历子串来$check$

字符限定时,可以用静态数组来充当哈希表。

求满足条件的最小值

窗口内是要求满足条件的,但要求最小值,因此在缩小窗口时收集$res$.

995. K 连续位的最小翻转次数

30. 串联所有单词的子串


SlidingWindow
https://messenger1th.github.io/2024/07/24/LeetCode/SlidingWindow/
作者
Epoch
发布于
2024年7月24日
许可协议