خوارزميةمجاني
النافذة المنزلقة
اعثر على أكبر مجموع لـ k أعداد متتالية دون إعادة جمع النافذة كلها في كل مرة.
- الزمن
- O(n)
- الذاكرة
- O(1)
تتبّعها خطوة بخطوة
الخطوة 1 من 9
1function maxWindowSum(nums, k) {2 let total = 0;3 for (let i = 0; i < k; i++) total += nums[i];4 let best = total;5 for (let i = k; i < nums.length; i++) {6 total += nums[i] - nums[i - k];7 best = Math.max(best, total);8 }9 return best;10}- k
- = 3
- total
- = 8
- 2
- 1
- 5
- 1
- 3
- 2
نجمع النافذة الأولى المكوّنة من k = 3 أعداد: total = 8.
كيف تعمل
اجمع أول k أعداد مرة واحدة. ثم حرّك النافذة خطوة خطوة: أضف العدد الذي يدخل من اليمين واطرح العدد الذي يخرج من اليسار. تحديث كل نافذة يكلّف O(1)، لذا يكون المرور كله خطّياً.