Menu
CoddyTech

Activity Selection Problem

يمتد النشاط i من الوقت start[i] إلى الوقت finish[i]. ينفّذ شخص واحد نشاطًا واحدًا في كل مرة، ويجب أن يبدأ النشاط التالي بعد انتهاء النشاط السابق تمامًا: لا يمكن أن يتبع النشاطَ نشاطٌ يبدأ في الوقت نفسه الذي ينتهي فيه نشاط آخر.

أعِد أكبر عدد من الأنشطة التي يمكن لشخص واحد تنفيذها.

الدالة

maxActivities(start: integer-array, finish: integer-array) → integer
startinteger-array
وقت بدء كل نشاط
finishinteger-array
وقت انتهاء كل نشاط؛ finish[i] يقابل start[i]
تُرجعinteger
أكبر عدد من الأنشطة التي يمكن لشخص واحد القيام بها، واحدًا تلو الآخر

القيود

  • 1 ≤ start.length == finish.length ≤ 5000
  • 0 ≤ start[i] ≤ finish[i] ≤ 105
  • قد يبدأ نشاط وينتهي في الوقت نفسه. المصفوفات غير مرتبة.

أمثلة

المدخلات
start = [10, 12, 20, 14, 25, 21]finish = [13, 16, 24, 19, 30, 22]
المخرجات
4
الشرح
تنفيذ 10 إلى 13، و14 إلى 19، و21 إلى 22، و25 إلى 30 يعطي 4. خمسة مستحيلة: 10 إلى 13 تتعارض مع 12 إلى 16، و21 إلى 22 مع 20 إلى 24.
challenge icon

سؤال إضافي

يعمل شخصان الآن بالتوازي، وينفّذ كلٌّ منهما نشاطًا واحدًا في كل مرة. كم نشاطًا يمكنهما إنجازه معًا، ومن الشخص الذي ينبغي أن يتولى كل نشاط؟

إعادة ضبط الشيفرة
def maxActivities(start, finish):
    # اكتب الكود هنا

اختبار #1

اختبار #2

اختبار #3

الوسائط

start = [10, 12, 20, 14, 25, 21]
finish = [13, 16, 24, 19, 30, 22]

الإخراج المتوقع

4