Menu
CoddyTech

Merge Two Sorted Lists

لديك قائمتان مترابطتان أحاديتا الاتجاه، مخزّنتان كلٌّ منهما في مصفوفتين لهما الطول نفسه. في القائمة الأولى، تحتوي العقدة i على القيمة values1[i] وترتبط بالعقدة next1[i]. وتعمل القائمة الثانية بالطريقة نفسها باستخدام next2 وvalues2. في كلتا القائمتين، تنهي -1 القائمة، والعقدة 0 هي الرأس. العقد غير مخزّنة بترتيب القائمة، لذا اتبع الروابط.

كل قائمة مرتبة ترتيبًا غير تنازلي على امتداد روابطها. ادمج القائمتين في قائمة واحدة مرتبة، وأعِد قيمها بالترتيب.

الدالة

mergeTwoLists(next1: integer-array, values1: integer-array, next2: integer-array, values2: integer-array) → integer-array
next1integer-array
فهرس العقدة التي ترتبط بها كل عقدة في القائمة الأولى، أو ‎-1‎ للعقدة الأخيرة فيها
values1integer-array
القيمة التي تحتفظ بها كل عقدة في القائمة الأولى
next2integer-array
فهرس العقدة التي تشير إليها كل عقدة في القائمة الثانية، أو ‎-1‎ لعقدتها الأخيرة
values2integer-array
القيمة التي تحتفظ بها كل عقدة في القائمة الثانية
تُرجعinteger-array
قيم القائمة المدمجة، بالترتيب

القيود

  • 1 ≤ L1 ≤ 2000، حيث إن L1 هو طول كلٍّ من next1 وvalues1.
  • 1 ≤ L2 ≤ 2000، حيث إن L2 هو طول next2 وvalues2.
  • -1000 ≤ values1[i], values2[j] ≤ 1000
  • كل عنصر في next1 هو -1 أو فهرس عقدة في القائمة الأولى، وكل عنصر في next2 هو -1 أو فهرس عقدة في القائمة الثانية.
  • بدءًا من العقدة 0، تمر كل قائمة على كل عقدة من عقدها مرة واحدة بالضبط، ثم تصل إلى -1. لا توجد دورة.
  • على طول روابطها، تكون كل قائمة مرتبة ترتيبًا غير تنازلي.

أمثلة

المدخلات
next1 = [2, -1, 1]values1 = [1, 6, 4]next2 = [3, 2, -1, 1]values2 = [2, 7, 9, 3]
المخرجات
[1, 2, 3, 4, 6, 7, 9]
الشرح
باتباع الروابط، تزور القائمة الأولى العقد 0, 2, 1 وتقرأ 1, 4, 6؛ وتقرأ القائمة الثانية 2, 3, 7, 9. باختيار الأصغر في المقدمة في كل مرة، نحصل على 1, 2, 3, 4, 6, 7, 9.
challenge icon

سؤال إضافي

هل يمكنك دمج k قوائم مرتبة في زمن O(N log k)، حيث N هو العدد الإجمالي للعُقَد؟

إعادة ضبط الشيفرة
def mergeTwoLists(next1, values1, next2, values2):
    # اكتب الشيفرة هنا

اختبار #1

اختبار #2

اختبار #3

الوسائط

next1 = [2, -1, 1]
values1 = [1, 6, 4]
next2 = [3, 2, -1, 1]
values2 = [2, 7, 9, 3]

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

[1, 2, 3, 4, 6, 7, 9]