Sliding-window-tekniikka ylläpitää vierekkäistä aluetta (ikkunaa) taulukon tai merkkijonon yli ja liukuu sitä sen sijaan, että laskettaisiin uudelleen alusta, ratkaisee monia alijoukko/osamerkkijono-ongelmia O(n):ssä.
Idea
Laajenna ikkunaa siirtämällä oikeaa reunaa; pienennä sitä siirtämällä vasenta reunaa, kun rajoitus rikkoutuu. Käytä uudelleen edellistä laskelmaa uudelleenskannauksen sijaan.
Esimerkki: koko k:n minkä tahansa ikkunan maksimisumma
():
window = (arr[:k])
best = window
i (k, (arr)):
window += arr[i] - arr[i - k]
best = (best, window)
best
max_window_sum([, , , , , ], )
