تقنية sliding-window تحافظ على نطاق متجاور (نافذة) فوق مصفوفة أو سلسلة نصية وتنزلقها بدلاً من إعادة الحساب من الصفر، مما يحل العديد من مسائل المصفوفة الجزئية/السلسلة الجزئية في O(n).
الفكرة الأساسية
قم بتوسيع النافذة بتحريك الحافة اليمنى؛ قم بتقليصها بتحريك الحافة اليسرى عند انتهاك قيد ما. أعد استخدام الحساب السابق بدلاً من إعادة المسح.
مثال: أقصى مجموع لأي نافذة بحجم k
():
window = (arr[:k])
best = window
i (k, (arr)):
window += arr[i] - arr[i - k]
best = (best, window)
best
max_window_sum([, , , , , ], )
