定长滑动窗口模板与理解
模板

代码可能大不相同,因为窗口定义、维护窗口、根据窗口维护结果,都要根据题目灵活变动。
理解
定长滑动窗口算法本质:通过维护一个状态可传递的窗口,利用数据连续性,在窗口滑动时以增量更新(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 |

浙公网安备 33010602011771号