0Pricing
Coding Interview Prep · درس

مصفوفات الفروق لتحديثات النطاق

تطبيق عمليات الإضافة إلى النطاق بسرعة

مصفوفات الفروق لتحديثات النطاق درس مجاني في Coding Interview Prep على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Coding Interview Prep، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Coding Interview Prep 4 دروس في المجموع.

اقلب المشكلة

أجابت المجاميع التراكمية عن استعلامات النطاق بسرعة. أما مصفوفة الفروق فتعكس الفكرة لتطبيق تحديثات نطاق كثيرة بسرعة. 🔁

الطريقة البطيئة

تكلف إضافة قيمة إلى كل عنصر في نطاق، مع تكرار ذلك مرات كثيرة، O(n) لكل تحديث. ومع q من التحديثات، تتضخم هذه الكلفة بشدة.

خزّن التغييرات

بدلًا من تعديل كل خلية، سجّل فقط موضع بدء التغيير وموضع انتهائه. علّم الحافتين، لا الوسط.

ما الذي تخزّنه مصفوفة الفروق

تخزّن مصفوفة الفروق الفجوة بين كل عنصر والعنصر الذي يسبقه. ويؤدي تعديل فجوة واحدة إلى إزاحة مقطع كامل لاحقًا.

حيلة العلامتين

لإضافة v من l إلى r، أضف v عند الفهرس l واطرح v عند الفهرس r + 1. يغطي هذان التعديلان النطاق بأكمله.

diff[l] += v
diff[r + 1] -= v

لماذا نطرح

تشغّل الإضافة عند l التغيير، بينما توقفه عملية الطرح عند r + 1. وبذلك تحدّدان التحديث في نطاق واحد، فتجعلانه متوقفًا بعده.

طبّق كل التحديثات بكلفة قليلة

كل تحديث هو عمليتا كتابة فقط في المصفوفة، لذا تستغرق q من التحديثات O(q) إجمالًا. وتؤجَّل العمليات الثقيلة إلى النهاية.

استعد المصفوفة النهائية

بعد وضع جميع العلامات، احسب مجموعًا تراكميًا لمصفوفة الفروق. ويعيد هذا المرور الواحد بناء كل قيمة نهائية.

for i in range(1, n):
    diff[i] += diff[i - 1]

حدّد الحجم مع خانة حارسة

اجعل المصفوفة أطول بخلية واحدة حتى لا يتجاوز r + 1 نهايتها. وتتجنب خانة الحراسة الإضافية أخطاء الفهارس.

الكلفة الإجمالية

تنفق O(q) لوضع علامات التحديثات، ثم تمرّ مرورًا واحدًا زمنه O(n) لإعادة البناء. وتكون الكلفة المجمعة أقل بكثير من O(n مضروبًا في q) بالطريقة الساذجة.

متى تتفوق

تتألق مصفوفات الفروق في حسابات الحجوزات ورسوم الطرق، وفي أي مسألة تتضمن عمليات كثيرة من إضافة إلى نطاق ثم قراءة نهائية واحدة.

تحقق سريع

تضيف v إلى كل عنصر من الفهرس l إلى الفهرس r.

مراجعة

يمكنك تجميع تحديثات النطاق باستخدام مصفوفة فروق: علّم l وr + 1، ثم احسب المجموع التراكمي مرة واحدة لإعادة البناء. تحديثات سريعة وقراءة واحدة. ✅

الأسئلة الشائعة

هل درس «مصفوفات الفروق لتحديثات النطاق» مجاني؟

نعم — نص درس «مصفوفات الفروق لتحديثات النطاق» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Coding Interview Prep، انتقل إلى CoddyKit PRO. تتضمن دورة Coding Interview Prep 4 دروس في المجموع.

ماذا ستتعلم في «مصفوفات الفروق لتحديثات النطاق»؟

تطبيق عمليات الإضافة إلى النطاق بسرعة تتمرن على Coding Interview Prep مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Coding Interview Prep؟

لا تُشترط خبرة سابقة. Coding Interview Prep على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «مصفوفات الفروق لتحديثات النطاق»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Coding Interview Prep هذا؟

نعم. كل درس في Coding Interview Prep يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. إنشاء مصفوفة المجاميع السابقة
  2. جمع أي نطاق بالطرح
  3. عدّ المصفوفات الفرعية ذات المجموع المستهدف
  4. مصفوفات الفروق لتحديثات النطاق
← العودة إلى Coding Interview Prep