Sliding-window technique किसी array या string पर एक सतत range (window) बनाए रखती है और हर बार नए सिरे से गणना करने के बजाय उसे खिसकाती है, जिससे कई subarray/substring समस्याएँ O(n) में हल हो जाती हैं।
मूल विचार
right edge को आगे बढ़ाकर window को बड़ा करें; जब कोई constraint टूटे, तो left edge को आगे बढ़ाकर window को छोटा करें। दोबारा scan करने के बजाय पिछली गणना का पुनः उपयोग करें।
उदाहरण: size k की किसी भी window का अधिकतम sum
():
window = (arr[:k])
best = window
i (k, (arr)):
window += arr[i] - arr[i - k]
best = (best, window)
best
max_window_sum([, , , , , ], )
