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

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]
الشرح
أصغر قيمة على الإطلاق هي 1، وهي القيمة الأولى في الصف الثاني. بعدها تبدأ الصفوف بالقيم 2 و4 و3، لذا يأتي 2 تاليًا، وهكذا. ينتهي الصف الثالث بعد 5، لتتبقى القيم 6 و9 و10 في النهاية.

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

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]