Menu
CoddyTech

Course Schedule

هناك numCourses مقررًا، مرقمة من 0 إلى numCourses-1. كل زوج [a, b] في prerequisites يعني أنه عليك إكمال المقرر b قبل أن تبدأ المقرر a. أعد true إذا كان هناك ترتيب يتيح لك إكمال جميع المقررات، وfalse إذا لم يوجد.

الدالة

canFinish(numCourses: integer, prerequisites: integer-2d-array) → boolean
numCoursesinteger
عدد المقررات الدراسية
prerequisitesinteger-2d-array
الأزواج [a, b]، حيث يعني كل زوج أن المقرر b يسبق المقرر a
تُرجعboolean
صحيح إذا أمكن إكمال جميع المقررات، وخطأ خلاف ذلك

القيود

  • 1 ≤ numCourses ≤ 105
  • 1 ≤ prerequisites.length ≤ 5000
  • كل زوج [a, b] يحقق 0 ≤ a, b < numCourses.
  • لا يظهر أي زوج أكثر من مرة.
  • قد يُسمّي الزوج المقرر نفسه مرتين، [a, a]. يحتاج هذا المقرر إلى نفسه أولًا، لذا لا يمكن أخذه أبدًا.

أمثلة

المدخلات
numCourses = 4prerequisites = [[1, 0], [2, 1], [3, 1]]
المخرجات
true
الشرح
المقرر 0 ليس له متطلبات سابقة، لذا تأخذه أولًا. وهذا يتيح لك أخذ المقرر 1، الذي يتيح بدوره أخذ المقررين 2 و3، لذا فإن الترتيب 0، 1، 2، 3 مناسب.
challenge icon

سؤال إضافي

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

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

اختبار #1

اختبار #2

الوسائط

numCourses = 4
prerequisites = [[1, 0], [2, 1], [3, 1]]

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

true