La tecnica sliding-window mantiene un intervallo contiguo (finestra) su un array o stringa e la fa scorrere invece di ricalcolare da zero, risolvendo molti problemi di subarray/substring in O(n).
L'idea
Espandi la finestra spostando il bordo destro; riducila spostando il bordo sinistro quando un vincolo è violato. Riutilizza il calcolo precedente invece di riscansionare.
Esempio: somma massima di qualsiasi finestra di dimensione k
():
window = (arr[:k])
best = window
i (k, (arr)):
window += arr[i] - arr[i - k]
best = (best, window)
best
max_window_sum([, , , , , ], )
