Technika sliding-window utrzymuje ciągły zakres (okno) na tablicy lub łańcuchu znakowym i przesuwa je zamiast przeliczać od nowa, rozwiązując wiele problemów z podtablicą/podłańcuchem w O(n).
Ideę
Rozwiń okno, przesuwając prawą krawędź; zmniejsz je, przesuwając lewą krawędź, gdy ograniczenie jest naruszane. Ponownie użyj poprzedniej obliczeń zamiast skanować od nowa.
Przykład: maksymalna suma dowolnego okna o rozmiarze k
():
window = (arr[:k])
best = window
i (k, (arr)):
window += arr[i] - arr[i - k]
best = (best, window)
best
max_window_sum([, , , , , ], )
