定长滑动窗口模板与理解

模板

image

代码可能大不相同,因为窗口定义、维护窗口、根据窗口维护结果,都要根据题目灵活变动。

理解

定长滑动窗口算法本质:通过维护一个​​状态可传递的窗口​​,利用数据连续性,在窗口滑动时以​​增量更新(O(1)或O(m))​​ 取代​​完全重新计算(O(k))​​,从而显著降低时间复杂度。

例题解析

例题 窗口定义 增量更新方法(对应入窗、出窗)
643. 子数组最大平均数 I 子数组的数值和(长度固定时,平均值最大等价于总和最大,总和更方便维护) 新和 = 旧和 - 移出元素 + 移入元素
1343. 大小为 K 且平均值大于等于阈值的子数组数目 子数组的数值和(长度固定时,平均值最大等价于总和最大,总和更方便维护) 维护新和
2090. 半径为 k 的子数组平均值 2k+1长度子数组的数值和 维护新和
567. 字符串的排列 子串字符频次 更新哈希表:移出元素频次-1,移入元素频次+1
438. 找到字符串中所有字母异位词 子串字符频次 更新哈希表
2841. 几乎唯一子数组的最大和 子数组数值和+子数组数值频次 维护新和,更新哈希表
2461. 长度为 K 子数组中的最大和 子数组数值和+子数组数值频次 维护新和,更新哈希表
1456. 定长子串中元音的最大数目 子串元音字符数量 移出元素若为元音则计数-1,移入元素若为元音则计数+1
2379. 得到 K 个黑块的最少涂色次数 子串白块字符数量 移出元素若为白色则计数-1,移入元素若为元音则白色+1
posted @ 2025-08-10 11:31  Varc  阅读(31)  评论(0)    收藏  举报