مؤشران في مصفوفة مرتبة
تحريك الطرفين إلى الداخل للوصول إلى هدف
مؤشران في مصفوفة مرتبة درس مجاني في Competitive Programming Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Competitive Programming Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Competitive Programming Academy 4 دروس في المجموع.
لماذا نستخدم مؤشرين
تفحص تقنية المؤشرين مصفوفةً باستخدام فهرسين بدلًا من الحلقات المتداخلة، فتحوّل كثيرًا من الأفكار ذات التعقيد O(n^2) إلى مرور واحد واضح بتعقيد O(n). 🎯
الترتيب هو الكلمة السحرية
تحتاج الطريقة التقليدية إلى مصفوفة مرتبة. فالترتيب يساعدك على الاستدلال: التحرك يمينًا يزيد القيمة، والتحرك يسارًا يقللها، ولذلك تمثل كل خطوة قرارًا حقيقيًا.
مؤشران عند الطرفين
ابدأ بمؤشر عند الطرف left ومؤشر آخر عند الطرف right. يواجه المؤشران أحدهما الآخر، وسيقلّصان المسافة بينهما تدريجيًا.
left = 0
right = len(a) - 1حرّك الطرفين إلى الداخل
في كل خطوة، حرّك مؤشرًا واحدًا فقط إلى الداخل. ويخبرك ترتيب المصفوفة بأي جانب ينبغي دفعه قليلًا للاقتراب من هدفك.
شرط الحلقة
واصل التكرار ما دام left < right. وعندما يلتقي المؤشران أو يتجاوز أحدهما الآخر، تكون قد فحصت كل زوج مفيد ويمكنك التوقف.
while left < right:
# inspect a[left] and a[right]
passاقرأ المجموع الحالي
اعتبر a[left] + a[right] مرشحك الحالي. وتخبرك مقارنته بالهدف بما إذا كنت تحتاج إلى قيمة أكبر أم أصغر بعد ذلك.
total = a[left] + a[right]أصغر من اللازم: حرّك left
إذا كان المجموع أقل من الهدف، فأنت تحتاج إلى المزيد. حرّك مؤشر left إلى اليمين باتجاه القيم الأكبر، لأن المصفوفة مرتبة تصاعديًا.
if total < target:
left += 1أكبر من اللازم: حرّك right
إذا كان المجموع أكبر من الهدف، فأنت تحتاج إلى الأقل. حرّك مؤشر right إلى اليسار باتجاه القيم الأصغر لخفض المجموع.
elif total > target:
right -= 1كل خطوة تتخلّص من عمل
تؤدي كل حركة إلى استبعاد مجموعة كاملة من الأزواج التي لا تحتاج إلى اختبارها. ولهذا يكون الفحص خطيًا بدلًا من أن يكون تربيعيًا.
لماذا تظل الطريقة صحيحة
أنت تستبعد فقط الأزواج التي لا يمكن أن تطابق الهدف، ولذلك لا تتجاوز الإجابة الصحيحة أبدًا. وهذه السلامة هي ما يجعل المؤشرين موثوقين في المسابقات.
ما بعد الطرفين
تدعم الفكرة نفسها أنواعًا مختلفة من المسائل: العكس في المكان، والتقسيم، والدمج. وعندما تتقن مؤشري الالتقاء، ستبدو هذه المسائل مألوفة جميعًا.
تحقّق سريع
أنت تفحص مصفوفة مرتبة من الطرفين بحثًا عن مجموع مستهدف.
مراجعة
يمسح المؤشران مصفوفة مرتبة من طرفيها، ويحرّك أحدهما إلى الداخل في كل خطوة ما دام left < right. إنها طريقة خطية وصحيحة، وتشكل أساسًا لكثير من الحيل. 🚀
الأسئلة الشائعة
هل درس «مؤشران في مصفوفة مرتبة» مجاني؟
نعم — نص درس «مؤشران في مصفوفة مرتبة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Competitive Programming Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Competitive Programming Academy 4 دروس في المجموع.
ماذا ستتعلم في «مؤشران في مصفوفة مرتبة»؟
تحريك الطرفين إلى الداخل للوصول إلى هدف تتمرن على Competitive Programming Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Competitive Programming Academy؟
لا تُشترط خبرة سابقة. Competitive Programming Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «مؤشران في مصفوفة مرتبة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Competitive Programming Academy هذا؟
نعم. كل درس في Competitive Programming Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- مؤشران في مصفوفة مرتبة
- العثور على زوج ذي مجموع محدد
- إزالة التكرارات في مكانها
- دمج تسلسلين مرتبين