Скользящее окно (sliding window) работает с непрерывным куском массива или строки. При сдвиге на шаг один элемент входит, один выходит, поэтому ответ не считают заново, а обновляют за O(1). Это частный случай техники двух указателей для непрерывных подмассивов.

![Окно длины 3 скользит по [2, 1, 5, 1, 3, 2]](img/lessons/algorithms/sliding-window-fixed-sums.svg)

Окно фиксированной длины

Задача: максимальная сумма k подряд идущих элементов. Перебор считает сумму каждого окна заново: (n - k + 1) * k сложений, то есть O(nk). При сдвиге окна новая сумма равна старая + a[i] - a[i - k].

python
def max_sum_k(a, k):
    window = sum(a[:k])               # first window
    best = window
    for i in range(k, len(a)):
        window += a[i] - a[i - k]     # enter a[i], leave a[i - k]
        best = max(best, window)
    return best