目录一、什么情况下需要用滑动窗口?二、滑动窗口适合解决什么问题?三、滑动窗口的核心思想四、滑动窗口常见分类类型一:最长无重复窗口类型二:固定长度窗口类型三:最短覆盖窗口类型四:替换连续区间,使整体满足条件五、四道题的本质区别六、滑动窗口通用模板一:最长窗口模板对应 LC3七、滑动窗口通用模板二:固定长度窗口模板对应 LC438八、滑动窗口通用模板三:最短覆盖窗口模板对应 LC76九、滑动窗口通用模板四:替换区间 / 窗口外合法模板对应完美走位十、四种模板的核心区别1. 最长窗口2. 固定长度窗口3. 最短覆盖窗口4. 替换区间窗口十一、滑动窗口解题时如何判断 left 什么时候动?LC3:窗口出现重复时动 leftLC438:窗口长度超过 p.length 时动 leftLC76:窗口已经满足覆盖条件时动 left完美走位:窗口外已经合法时动 left十二、滑动窗口解题时如何判断 right 什么时候动?十三、滑动窗口中常见变量含义1. left2. right写法一:闭区间[left, right]写法二:左闭右开[left, right)3. need4. window5. valid6. ans / maxLen / minLen十四、什么时候用 Map?什么时候用数组?1. 用数组2. 用 Map3. 用普通对象十五、解滑动窗口题的标准思考步骤第一步:判断是不是连续区间问题第二步:判断求最长、最短还是固定长度第三步:明确窗口表示什么第四步:明确窗口状态怎么维护第五步:明确什么时候移动 right第六步:明确什么时候移动 left第七步:明确什么时候更新答案十六、四道题的模板归纳1. LC3:最长无重复子串模板2. LC438:固定长度异位词模板3. LC76:最小覆盖子串模板4. 完美走位:替换窗口模板十七、滑动窗口的核心代码骨架1. 最长合法窗口2. 最短满足窗口3. 固定长度窗口十八、解滑动窗口题需要具备哪些知识储备?1. 双指针思想2. 哈希表 / Map3. 字符频次数组4. 窗口区间长度计算闭区间[left, right]左闭右开[left, right)5. 频次满足条件的判断6. 复杂度分析十九、滑动窗口解题口诀二十、最终总结一、什么情况下需要用滑动窗口?一般题目中出现下面这些关键词,就要优先考虑滑动窗口:连续子串 连续子数组 最长 最短 包含 不包含 满足某种条件 至多 / 至少 固定长度 替换一段连续区间尤其是这几类问题:1. 找最长连续子串 / 子数组 2. 找最短连续子串 / 子数组 3. 找固定长度窗口内是否满足条件 4. 找包含目标字符的最短区间 5. 找通过替换一段连续区间使整体满足条件