Menu
CoddyTech
flag Ar iconالعربيةdown icon

Linked List Cycle

تُخزَّن القائمة المرتبطة في المصفوفة next: تشير العقدة i إلى العقدة next[i]، وتعني -1 أن القائمة تنتهي عندها. الرأس هو العقدة 0. اتبع الروابط بدءًا من الرأس وأعِد true إذا عدت في أي وقت إلى عقدة سبق أن زرتها، أو false إذا وصلت إلى النهاية. لا تُحتسب العقد التي لا تصل إليها أثناء التنقل، حتى لو كانت تشير بعضها إلى بعض في حلقة.

الدالة

hasCycle(next: integer-array) → boolean
nextinteger-array
الرابط الخاص بكل عقدة: next[i] هي العقدة التي تلي العقدة i، أو -1
تُرجعboolean
true إذا أعادت الجولة بدءًا من العقدة 0 زيارة عقدة، وfalse إذا وصلت إلى -1

القيود

  • 1 ≤ next.length ≤ 104
  • -1 ≤ next[i] ≤ next.length-1
  • قد ترتبط عدة عقد بالعقدة نفسها، وقد يتعذر الوصول إلى بعض العقد من الرأس.

أمثلة

المدخلات
next = [1, 2, 3, 1]
المخرجات
true
الشرح
يمرّ المسار بالعُقد 0 و1 و2 و3، ثم يعود إلى 1. تتم زيارة العقدة 1 مرتين، لذا تحتوي القائمة على دورة تمرّ بالعُقد 1 و2 و3.

lock icon+16 اختبارات مخفية عند الإرسال

challenge icon

سؤال إضافي

هل يمكنك أيضًا العثور على العقدة التي تبدأ عندها الدورة، مع استخدام ذاكرة إضافية O(1)؟

إعادة ضبط الشيفرة
def hasCycle(next):
    # اكتب الكود هنا
حالات الاختبار

الحالة 1

الحالة 2

الحالة 3

المدخلات

next = [1, 2, 3, 1]

المتوقع

true