Menu
CoddyTech

Merge k Sorted Lists

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

ادمجها في قائمة واحدة تضم كل القيم من جميع الصفوف، مرتبة ترتيبًا غير تنازلي، ثم أعدها. تظهر القيمة التي تتكرر عدة مرات، في صف واحد أو في عدة صفوف، بهذا العدد من المرات في النتيجة.

الدالة

mergeKLists(lists: integer-2d-array) → integer-array
listsinteger-2d-array
القوائم المرتبة، قائمة واحدة في كل صف، وقد تكون بأطوال مختلفة
تُرجعinteger-array
كل قيمة من كل صف، في قائمة واحدة مرتبة

القيود

  • 1 ≤ lists.length ≤ 104
  • 1 ≤ lists[i].length، وتحتوي جميع الصفوف معًا على 104 قيمة كحد أقصى
  • -104 ≤ lists[i][j] ≤ 104
  • كل صف مرتب ترتيبًا غير تنازلي.

أمثلة

المدخلات
lists = [[2, 6, 9], [1, 4, 10], [3, 5]]
المخرجات
[1, 2, 3, 4, 5, 6, 9, 10]
الشرح
تبدأ الصفوف بـ 2 و1 و3، لذا يأتي 1 أولًا. ثم تكون الرؤوس 2 و4 و3، لذا يأتي 2 بعد ذلك، وهكذا. ينفد الصف الثالث بعد 5، تاركًا 6 و9 و10.
challenge icon

سؤال إضافي

اعثر على أصغر نطاق [a, b] يحتوي على قيمة من كل صف. هل يمكن استخدام كومة لرؤوس الصفوف بالإضافة إلى أكبر رأس لتحقيق ذلك في O(N log k)؟

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

اختبار #1

اختبار #2

اختبار #3

وسيط

lists = [[2, 6, 9], [1, 4, 10], [3, 5]]

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

[1, 2, 3, 4, 5, 6, 9, 10]