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

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.

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

challenge icon

سؤال إضافي

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

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

الحالة 1

الحالة 2

الحالة 3

المدخلات

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

المتوقع

[-1, 0, 1, 2]