1.方法总结💡
1
窗口从0开始构建,右指针不断地扩大,直到满足 不满足条件停止,改为扩大左指针即缩小窗口,直到再次不满足(满足)条件停止,再改为扩大右指针,直至遍历完数组或字符串
2.适用题型🎯
1
数组或者字符串中求其满足条件的子序列或者子串 将原先需要嵌套循环问题转换为单循环问题 降低时间复杂度
3.注意点❗
1
2
1️⃣右指针何时停止继续扩大
2️⃣左指针何时开始缩小
4.模板🔑
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public int Method(int[] nums) {
int left = 0, right = 0;//左右指针-维护滑动窗口大小
int res = 0, count = 0;//res记录答案 count计数 判断是否达到规定的窗口大小
Map/Set/Array/Queue //辅助数据结构 去重/记录
while (right < nums.length) { //先right指针 遍历数组或字符串 右指针一直扩大
count-增加/减少计数
while (count超过规定的条件) { //也就是窗口什么时候 不能扩大了 -左指针收缩
res去记录答案
count减少/增加计数
left++;//左指针右移 收缩
}
int len = right-left+1 //一般会求窗口大小
right++;//右指针右移
}
return res;
}
5.相关题目📝
1