Min وMax وSum والمجاميع التراكمية
تجميع قائمة في مرور واحد
Min وMax وSum والمجاميع التراكمية درس مجاني في Competitive Programming Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Competitive Programming Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Competitive Programming Academy 4 دروس في المجموع.
التجميع في مرور واحد
تحتاج مسائل كثيرة إلى عدد واحد فقط من المصفوفة. تنفّذ الدوال المضمّنة في Python هذا التجميع في مرور سريع واحد على القائمة.
a = [4, 1, 7, 3]احسب المجموع
تجمع sum(a) كل عنصر وتعيد المجموع الكلي. وهي سريعة مثل تنفيذ C، لذا يُفضّل استخدامها بدل كتابة حلقة تجميع خاصة بك.
total = sum(a) # 15الأصغر والأكبر
تعيد min(a) وmax(a) أصغر القيم وأكبرها. وتمسحان القائمة كاملة مرة واحدة، بزمن O(n).
lo, hi = min(a), max(a)مقارنة عددين
تقبل min وmax أيضًا وسائط منفصلة. تختار max(x, y) القيمة الأكبر من قيمتين دون إنشاء قائمة أولًا.
best = max(score, best)التجميع باستخدام key
مرّر دالة key للمقارنة حسب قيمة مشتقة. تعيد max(words, key=len) أطول كلمة، لا الكلمة الأكبر معجميًا.
longest = max(words, key=len)التعامل مع القائمة الفارغة
يتسبب min وmax في انهيار عند تمرير قائمة فارغة. مرّر default= أو تحقّق من الطول أولًا لتجنب خطأ وقت التشغيل.
hi = max(a, default=0)فكرة المجموع الجاري
يحتفظ المجموع الجاري بمجموع أثناء مرورك على المصفوفة. وهو أساس المجاميع التراكمية والعديد من حيل العد.
run = 0
for x in a:
run += xتتبّع أفضل قيمة حتى الآن
احتفظ بمتغير أفضل قيمة حتى الآن أثناء المسح للإجابة عن أسئلة من نمط أكبر مجموع فرعي في مرور واحد.
best = a[0]
for x in a:
best = max(best, x)بناء قائمة المجاميع التراكمية
خزّن كل مجموع جارٍ في قائمة لتحصل على مصفوفة المجاميع التراكمية. بعد ذلك يمكنك الإجابة عن مجاميع النطاقات بطرح عنصرين.
pre = [0]
for x in a:
pre.append(pre[-1] + x)اختصار accumulate
ينتج itertools.accumulate المجاميع الجارية نيابةً عنك، لذلك تصبح مصفوفة المجاميع التراكمية سطرًا واحدًا موثوقًا.
from itertools import accumulate
pre = list(accumulate(a))احذر من خرافات تجاوز السعة
الخبر الجيد هو أن أعداد Python الصحيحة غير محدودة، لذلك لا تتجاوز المجاميع الكبيرة السعة أبدًا. الخطر الحقيقي هو بطء الشيفرة، لا خطأ الحساب.
huge = sum(range(10**6)) # fineتحقق سريع
تحتاج إلى أطول كلمة في قائمة. ما الاستدعاء الصحيح؟
مراجعة: قوة المرور الواحد
يمكنك الآن حساب المجموع والعثور على القيم القصوى والاحتفاظ بالمجاميع الجارية في مرور واحد. تحوّل عمليات التجميع العديد من مسائل المصفوفات إلى حلقة واحدة. ✨
الأسئلة الشائعة
هل درس «Min وMax وSum والمجاميع التراكمية» مجاني؟
نعم — نص درس «Min وMax وSum والمجاميع التراكمية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Competitive Programming Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Competitive Programming Academy 4 دروس في المجموع.
ماذا ستتعلم في «Min وMax وSum والمجاميع التراكمية»؟
تجميع قائمة في مرور واحد تتمرن على Competitive Programming Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Competitive Programming Academy؟
لا تُشترط خبرة سابقة. Competitive Programming Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «Min وMax وSum والمجاميع التراكمية»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Competitive Programming Academy هذا؟
نعم. كل درس في Competitive Programming Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- القوائم والفهرسة والتقطيع في CP
- إنشاء المصفوفات بسرعة باستخدام الاستيعاب
- Min وMax وSum والمجاميع التراكمية
- العثور على الفهرس لا القيمة فقط