0Pricing
Competitive Programming Academy · درس

التجميع والتصنيف باستخدام Map

تجميع الكلمات المتناظرة والعناصر المتشابهة

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

التجميع نمط متكرر

تطلب منك مسائل كثيرة تجميع العناصر التي تشترك في خاصية ما. ويحوّل ربط مفتاح بحاوية هذه المهمة إلى مرور واحد واضح. 🗂️

اختيار مفتاح التجميع

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

التجميع باستخدام defaultdict

استخدم defaultdict(list) بحيث يبدأ كل مفتاح جديد بحاوية فارغة. يمكنك إضافة العناصر دون التحقق من وجود المفتاح.

from collections import defaultdict
buckets = defaultdict(list)

الحلقة الأساسية

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

for word in words:
    buckets[key_of(word)].append(word)

تجميع الكلمات المتشابهة

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

k = ''.join(sorted(word))
buckets[k].append(word)

مفاتيح الصفوف لعدّ التكرارات

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

k = tuple(Counter(word)[c] for c in 'abcdefghijklmnopqrstuvwxyz')

التجميع حسب خاصية

اجمع الأرقام حسب الباقي أو الزوجية أو الطول، وذلك بمجرد تغيير المفتاح. ويبقى النمط نفسه في المسائل المختلفة.

for n in nums:
    buckets[n % 3].append(n)

فكرة الفرز بالحاويات

عندما تقع القيم ضمن نطاق صغير، ضع كل قيمة في حاوية مفهرسة واقرأ الحاويات بالترتيب. ينتج عن ذلك فرز قريب من الخطي.

for x in nums:
    bucket[x].append(x)

تجميع النتائج

بعد التجميع في الحاويات، تكون الإجابة عادةً هي قيم القاموس. حوّلها إلى قائمة عندما يريد نظام التحكيم المجموعات نفسها.

result = list(buckets.values())

العد لكل مجموعة

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

sizes = {k: len(v) for k, v in buckets.items()}

لماذا يفوز الربط

يستغرق التجميع باستخدام خريطة O(n) بدلًا من مقارنة كل زوج. ويتولى المفتاح المجزأ مهمة المطابقة نيابةً عنك.

تحقق سريع

تريد تجميع الكلمات بحيث تقع الكلمات المتشابهة في الحروف في الحاوية نفسها.

مراجعة

اجمع العناصر بربط مفتاح كل عنصر بحاوية في defaultdict خلال مرور واحد بزمن O(n). اختر المفتاح بعناية، وستصبح مسائل التجميع سهلة للغاية. 🚀

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

هل درس «التجميع والتصنيف باستخدام Map» مجاني؟

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

ماذا ستتعلم في «التجميع والتصنيف باستخدام Map»؟

تجميع الكلمات المتناظرة والعناصر المتشابهة تتمرن على Competitive Programming Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Competitive Programming Academy؟

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

كم من الوقت يستغرق درس «التجميع والتصنيف باستخدام Map»؟

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

هل يمكنني كتابة وتشغيل أكواد في درس Competitive Programming Academy هذا؟

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

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

  1. المجموعات للتحقق من العضوية وإزالة التكرار
  2. القواميس كجداول بحث
  3. ‏Counter وdefaultdict عمليًا
  4. التجميع والتصنيف باستخدام Map
← العودة إلى Competitive Programming Academy