Menu
CoddyTech

Reverse Linked List

لديك قائمة مترابطة أحادية مخزنة في المصفوفة next: تشير العقدة i إلى العقدة next[i]، وتنهي -1 القائمة، ورأس القائمة هو العقدة 0. العقد غير مخزنة بترتيب القائمة، لذا اتبع الروابط.

اعكس القائمة بتغيير اتجاه كل رابط، بحيث تصبح العقدة الأخيرة سابقًا هي الرأس، وتصبح العقدة 0 هي العقدة الأخيرة التي تشير إلى -1. أعد مصفوفة next المحدّثة، التي لها الطول نفسه الذي للإدخال.

الدالة

reverseList(next: integer-array) → integer-array
nextinteger-array
فهرس العقدة التي ترتبط بها كل عقدة، أو ‎-1‎ للعقدة الأخيرة
تُرجعinteger-array
العنصر التالي في المصفوفة المعكوسة

القيود

  • 1 ≤ next.length ≤ 5000
  • كل قيمة في next[i] إما -1 أو فهرس عقدة من 0 إلى next.length-1.
  • بدءًا من العقدة 0، تزور القائمة كل عقدة مرة واحدة بالضبط، ثم تصل إلى -1. لا توجد دورة.

أمثلة

المدخلات
next = [1, 2, 3, -1]
المخرجات
[-1, 0, 1, 2]
الشرح
القائمة هي 0 → 1 → 2 → 3. وعند عكسها تصبح 3 → 2 → 1 → 0، لذا ترتبط العقدة 3 بـ 2، والعقدة 2 بـ 1، والعقدة 1 بـ 0، والعقدة 0 بـ -1.
challenge icon

سؤال إضافي

هل يمكنك عكس الجزء من القائمة الواقع بين الموضع left والموضع right فقط، وترك العُقد التي تسبقه وتليه في أماكنها؟

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

اختبار #1

اختبار #2

اختبار #3

وسيط

next = [1, 2, 3, -1]

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

[-1, 0, 1, 2]