تحديث مجموع نافذة بدل حسابه من البداية
ال Sliding Window بتستفيد من نتيجة الخطوة السابقة لما تتحرك على أجزاء متجاورة بنفس الطول
شغل المثال بإستخدام Node.js لتوضيح الفكرة ويمكن تطبيق نفس المبدأ في لغات تانية
المثال العملي
const numbers = [2, 1, 5, 1, 3, 2];
const size = 3;
let sum = numbers.slice(0, size).reduce((a, b) => a + b, 0);
let best = sum;
for (let end = size; end < numbers.length; end++) {
sum += numbers[end] - numbers[end - size];
best = Math.max(best, sum);
}
console.log(best);النتيجة
9بدل إعادة جمع كل نافذة بنضيف العنصر الداخل ونطرح الخارج وأكبر مجموع هنا للعناصر 5 و 1 و 3
جرب بنفسك
غير حجم النافذة إلى 2 ثم أضف تحقق يمنع الحجم صفر أو أكبر من القائمة