Die sliding-window-Technik behält einen zusammenhängenden Bereich (Fenster) über einem Array oder String bei und verschiebt ihn, anstatt von vorne zu rechnen, und löst viele Subarray-/Substring-Probleme in O(n).
Die Idee
Erweitern Sie das Fenster, indem Sie die rechte Kante verschieben; verkleinern Sie es, indem Sie die linke Kante verschieben, wenn eine Einschränkung verletzt wird. Verwenden Sie die vorherige Berechnung wieder, anstatt neu zu scannen.
Beispiel: maximale Summe eines beliebigen Fensters der Größe k
():
window = (arr[:k])
best = window
i (k, (arr)):
window += arr[i] - arr[i - k]
best = (best, window)
best
max_window_sum([, , , , , ], )
