Η τεχνική sliding-window διατηρεί ένα συνεχόμενο εύρος (παράθυρο) πάνω από ένα array ή string και το ολισθαίνει αντί να υπολογίζει από την αρχή, λύνοντας πολλά προβλήματα subarray/substring σε O(n).
Η ιδέα
Επεκτείνετε το παράθυρο μετακινώντας το δεξί άκρο. συρρικνώστε το μετακινώντας το αριστερό άκρο όταν παραβιάζεται ένας περιορισμός. Επαναχρησιμοποιήστε τον προηγούμενο υπολογισμό αντί να σαρώσετε ξανά.
Παράδειγμα: μέγιστο άθροισμα οποιουδήποτε παραθύρου μεγέθους k
():
window = (arr[:k])
best = window
i (k, (arr)):
window += arr[i] - arr[i - k]
best = (best, window)
best
max_window_sum([, , , , , ], )
