Technika sliding-window udržuje souvislý rozsah (okno) přes pole nebo řetězec a posouvá jej namísto opětovného počítání od nuly, řeší mnoho problémů s podpole/podřetězcem v O(n).
Myšlenka
Rozdeezte okno posunutím pravého okraje; zmenšete jej posunutím levého okraje, když je porušeno omezení. Znovu použijte předchozí výpočet místo opětovného prohledávání.
Příklad: maximální součet jakéhokoli okna o velikosti k
():
window = (arr[:k])
best = window
i (k, (arr)):
window += arr[i] - arr[i - k]
best = (best, window)
best
max_window_sum([, , , , , ], )
