所谓滑动窗口,就是不断的调节子序列的起始位置和终止位置,从而得出我们要想的结果。

    滑动窗口的精妙之处在于根据当前子序列和大小的情况,不断调节子序列的起始位置。从而将 O(n^2) 的暴力解法降为 O(n) 。

    其实滑动窗口也可以理解为双指针法的一种!只不过这种解法更像是一个窗口的移动,所以叫做滑动窗口更适合一些。

    实现滑动窗口,主要确定如下三点:

    • 窗口内是什么?
    • 如何移动窗口的起始位置?
    • 如何移动窗口的结束位置?

    从这几题来看,不难发现滑动窗口用来解决子序列问题有奇效,题目给出的合法子序列条件可能千变万化,但终究不离其宗。