Theme
Primary Color

تحديث مجموع نافذة بدل حسابه من البداية

ال 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 ثم أضف تحقق يمنع الحجم صفر أو أكبر من القائمة

programming شرح