首页 📐算法 滑动窗口
文章
取消

📐算法 滑动窗口

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
本文由作者按照 CC BY 4.0 进行授权

Spring

📐算法 回溯