Menu
CoddyTech

Merge k Sorted Lists

lists satırları olarak k adet tam sayı listesi alırsınız. Her satır azalmayan sırada sıralıdır, satırların uzunlukları farklı olabilir ve hiçbir satır boş değildir.

Bunları, her satırdaki tüm değerleri azalmayan sırada içeren tek bir listede birleştirin ve bu listeyi döndürün. Bir satırda veya birkaç satırda birden çok kez görünen bir değer, sonuçta da o kadar kez yer alır.

Fonksiyon

mergeKLists(lists: integer-2d-array) → integer-array
listsinteger-2d-array
muhtemelen farklı uzunluklardaki sıralanmış listeler, her satırda bir tane
Döndürürinteger-array
her satırdaki her değeri tek bir sıralı listede

Kısıtlar

  • 1 ≤ lists.length ≤ 104
  • 1 ≤ lists[i].length ve tüm satırlarda toplamda en fazla 104 değer bulunur
  • -104 ≤ lists[i][j] ≤ 104
  • Her satır azalmayan sırada sıralanmıştır.

Örnekler

Girdi
lists = [[2, 6, 9], [1, 4, 10], [3, 5]]
Çıktı
[1, 2, 3, 4, 5, 6, 9, 10]
Açıklama
Satırlar 2, 1 ve 3 ile başlıyor, bu yüzden önce 1 gelir. Sonra başlar 2, 4 ve 3 olur; bu yüzden 2 onu izler ve böyle devam eder. Üçüncü satır 5'ten sonra tükenir, geriye 6, 9 ve 10 kalır.
challenge icon

Ek soru

Her satırdan bir değer içeren en küçük aralığı [a, b] bulun. Satır başlarından oluşan bir yığın ve en büyük satır başı bunu O(N log k) sürede yapabilir mi?

Kodu sıfırla
def mergeKLists(lists):
    # Kodu buraya yazın

Test #1

Test #2

Test #3

Argüman

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

Beklenen Çıktı

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