**滑动窗口(Sliding Window)**是一种用于有效解决涉及需要在输入数据上定义一个窗口或范围,并不断的在数据集上移动放大缩小该窗口或范围的问题的方法Geeksforgeeks。经常用于以下的具体问题:查找具有特定总和的子数组、查找具有唯一字符的最长子字符串,或解决需要固定大小窗口来有效处理元素的问题。
在编写滑动窗口算法时应该注意下面这些点:
- 滑动窗口的算法一般适用于
List
数据集; - 一般需要左右两个指针指向窗口的两个边界;
- 循环的终止条件一般为右指针到达了数据边界;
- 每次循环中至少应该保证左右指针中至少一个发生变动;
- 一般会对窗口中的数据进行计数的操作,所以滑动窗口和容易于
HashMap
相结合。