sliding-window تکنیک ایک array یا string پر ایک متصل رینج (window) کو برقرار رکھتی ہے اور اسے شروع سے دوبارہ calculate کرنے کی بجائے slide کرتی ہے، بہت سے subarray/substring مسائل کو O(n) میں حل کرتی ہے۔
اہم خیال
دائیں edge کو move کرکے window کو expand کریں؛ بائیں edge کو move کرکے اسے shrink کریں جب کوئی constraint متصادم ہو۔ دوبارہ scanning کی بجائے پچھلے computation کو دوبارہ استعمال کریں۔
مثال: سائز k کی کسی بھی window کا زیادہ سے زیادہ رقم
():
window = (arr[:k])
best = window
i (k, (arr)):
window += arr[i] - arr[i - k]
best = (best, window)
best
max_window_sum([, , , , , ], )
