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

Middle of the Linked List

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

أعِد قيمة العقدة الوسطى. عندما تحتوي القائمة على عدد زوجي من العقد، تكون هناك عقدتان وسطيتان؛ أَعِد قيمة الثانية.

الدالة

middleNode(values: integer-array, next: integer-array) → integer
valuesinteger-array
القيمة التي تحتفظ بها كل عقدة
nextinteger-array
فهرس العقدة التي ترتبط بها كل عقدة، أو ‎-1‎ للعقدة الأخيرة
تُرجعinteger
قيمة العقدة الوسطى، أي العقدة الوسطى الثانية عندما يكون الطول زوجيًا

القيود

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

أمثلة

المدخلات
values = [4, 9, 2, 7, 5]next = [3, -1, 1, 4, 2]
المخرجات
5
الشرح
يعطي تتبّع الروابط من العقدة 0 العقد 0, 3, 4, 2, 1، لذا تكون القائمة 4, 7, 5, 2, 9. العقدة الثالثة من أصل خمس هي العقدة 4، وقيمتها 5. أما العنصر الأوسط في المصفوفة نفسها، values[2] = 2، فهو عقدة مختلفة.

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

challenge icon

سؤال إضافي

هل يمكنك إرجاع العقدة التي تقع عند ثلث طول القائمة في مرور واحد؟ ما سرعة تحرك كل مؤشر، وأين ستتوقف؟

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

الحالة 1

الحالة 2

الحالة 3

المدخلات

values = [4, 9, 2, 7, 5]
next = [3, -1, 1, 4, 2]

المتوقع

5