滑动窗口相关问题在面试中很常见,本文目的,就是让你用最节约脑细胞的方式,掌握这个算法技巧。这是个系列教程,如果觉得好,就请关注一波吧。
1 举个栗子
下面这个问题,就是典型的滑动窗口要解决的问题。
请找出一个数组中所有大小为K的连续子数组的平均值
看起来,这句话有点绕,没关系,咱们用个具体的小例子来说明一下:
Array: [1, 3, 2, 6, -1, 4, 1, 8, 2], K=5
这个例子,我们需要找出大小为5的所有连续子数组的平均值,我们可以这样算:
- 对于前5个元素的子数组 (下标 0-4), 平均值是: (1+3+2+6-1)/5 => 2.2
- 第二个5个元素的子数组的平均值 (下标 1-5) 是: (3+2+6-1+4)/5 => 2.8
- 第三个5个元素的子数组 (下标 2-6), 平均值是: (2+6-1+4+1)/5 => 2.4
- ...
这样一直算下去,我们就可以得到最终的输出结果