Mbinu ya sliding-window inaendelea na eneo linaloendelea (dirisha) juu ya array au kamba na kuislide badala ya kuhesabu tena tangu mwanzo, na kutatua matatizo mengi ya subarray/substring katika O(n).
Wazo
Panua dirisha kwa kusogeza pembe ya kulia; kupunguza kwa kusogeza pembe ya kushoto wakati kizuizi kinakiwa kimekosewa. Tumia upya hesabu ya awali badala ya kusambaza tena.
Mfano: jumla ya juu zaidi ya dirisha lolote la ukubwa k
():
window = (arr[:k])
best = window
i (k, (arr)):
window += arr[i] - arr[i - k]
best = (best, window)
best
max_window_sum([, , , , , ], )
