滑动窗口是双指针技巧的终极形态,专门用于解决 子串、子数组 相关的问题。
很多人刷滑动窗口容易写出极其复杂的各种 while 循环,边界条件一不小心就死循环或者数组越界。
🎬 滑动窗口与二分区间交互演示
交互式算法动效
二分查找区间收缩动态模拟
直观演示左右指针 `[left, right]` 与中点 `mid` 的移动轨迹
LEFT
2
[0]5
[1]8
[2]12
[3]MID
16
[4]23
[5]38
[6]45
[7]56
[8]RIGHT
72
[9]准备开始二分查找...
步骤: 1 / 1
1. 万能滑动窗口代码框架模板
void slidingWindow(string s) {
unordered_map<char, int> window;
int left = 0, right = 0;
while (right < s.size()) {
// c 是将移入窗口的字符
char c = s[right];
// 增大窗口
right++;
// 进行窗口内数据的一系列更新
...
/*** debug 输出的位置 ***/
// printf("window: [%d, %d)\n", left, right);
/********************/
// 判断左侧窗口是否要收缩
while (window needs shrink) {
// d 是将移出窗口的字符
char d = s[left];
// 缩小窗口
left++;
// 进行窗口内数据的一系列更新
...
}
}
}
🔒 本章节余下 70% 深度题解与动效为 VIP 专享
开通 VIP 会员立即解锁全部 400+ 算法专题精讲、万能解题模板与大厂面试通关路线。
400+ 经典高频题解
交互式动效与模拟
Java/Py/Go/C++ 多语言