स्लाइडिङ-विन्डो प्रविधिले एरे वा स्ट्रिङ्गमा एक सन्निहित दायरा (विन्डो) राखेर त्यसलाई स्लाइड गर्छ र शुरुबाट पुनः गणना गरी हराउँछ, धेरै सबएरे/सबस्ट्रिङ् समस्याहरूलाई O(n) मा समाधान गर्छ।
विचार
दायाँ किनारा हलाएर विन्डो विस्तार गर्नुहोस्; बाँयाँ किनारा हलाएर यसलाई संकुचित गर्नुहोस् जब कुनै बाध्यता उल्लङ्घन हुन्छ। पुनः स्क्यान गरी हराएर पहिलेको गणना पुनः प्रयोग गर्नुहोस्।
उदाहरण: आकार k को कुनै पनि विन्डोको अधिकतम योगफल
():
window = (arr[:k])
best = window
i (k, (arr)):
window += arr[i] - arr[i - k]
best = (best, window)
best
max_window_sum([, , , , , ], )
