0Pricing
Coding Interview Prep · درس

جمع أي نطاق بالطرح

الإجابة عن range[l..r] في زمن ثابت

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

الفائدة الحقيقية

كان بناء مصفوفة المجموع التراكمي خطوةً تمهيدية. أما الآن فتأتي الفائدة الرائعة: الإجابة عن مجموع أي نطاق باستخدام عملية طرح واحدة. ⚡

الفكرة الأساسية

مجموع النطاق ليس إلا مجموعًا كبيرًا ناقص مجموع أصغر. يؤدي طرح قيمتين من المجموع التراكمي إلى إلغاء كل ما يقع خارج نطاقك بوضوح.

الصيغة

لجمع العناصر من l إلى r، اطرح prefix[l] من prefix[r + 1]. تعمل هذه الصيغة الواحدة مع أي نطاق.

range_sum = prefix[r + 1] - prefix[l]

لماذا تنجح

يحتوي prefix[r + 1] على كل شيء حتى r، بينما يحتوي prefix[l] على كل ما قبل l. ويترك الفرق الجزء الأوسط بالضبط.

مثال محلول

بالنسبة إلى [3, 1, 4] يكون المجموع التراكمي هو [0, 3, 4, 8]. ولجمع الفهرسين 1 و2، اطرح 3 من 8 لتحصل على 5. وهذا يساوي 1 زائد 4.

استعلامات بزمن ثابت

كل استعلام هو عملية طرح واحدة فقط، لذا يُنفَّذ في O(1). وتستغرق ألفة استعلام الزمن نفسه لكل استعلام الذي يستغرقه استعلام واحد.

انتبه إلى خطأ الواحد

الخطأ الأكثر شيوعًا هو الفهرس عند الطرف الأعلى. مع وجود الصفر في البداية، تستخدم دائمًا prefix[r + 1]، وليس prefix[r]. انتبه إلى ذلك الحد.

شامل أم حصري

حدّد مبكرًا ما إذا كان r مشمولًا. تتعامل هذه الصيغة مع النطاق باعتباره شاملًا لكل من l وr، وهذا ما تتوقعه معظم مسائل المسابقات.

ضعها في دالة

تحافظ دالة مساعدة صغيرة على وضوح منطقك وتضع فهارسك في مكان واحد. اعتمد على هذه الدالة المساعدة بدلًا من كتابة العمليات الحسابية ضمنيًا.

def query(l, r):
    return prefix[r + 1] - prefix[l]

تعامل مع المصفوفة كاملة

لجمع المصفوفة بأكملها، استخدم l مساويًا لـ 0 وr مساويًا لـ n ناقص 1. تعطيك الصيغة prefix[n]، أي الإجمالي الكلي.

متى تتألق هذه الطريقة

كلما طرحت المسألة أسئلة كثيرة عن مجاميع نطاقات في مصفوفة ثابتة، تحوّل المجاميع التراكمية حلقةً زمنها O(n) لكل استعلام إلى إجابات فورية.

تحقق سريع

تريد حساب مجموع الفهارس من l إلى r، مع تضمين الطرفين.

مراجعة

يمكنك الآن الإجابة عن أي مجموع نطاق في O(1) باستخدام prefix[r + 1] ناقص prefix[l]. انتبه إلى الإزاحة الناتجة عن الصفر في البداية، وستتجنب الأخطاء. ✅

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

هل درس «جمع أي نطاق بالطرح» مجاني؟

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

ماذا ستتعلم في «جمع أي نطاق بالطرح»؟

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

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

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

كم من الوقت يستغرق درس «جمع أي نطاق بالطرح»؟

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

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

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

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

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