Menu
CoddyTech

Merge k Sorted Lists

lists satırları olarak k adet tam sayı listesi alırsın. 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ştir ve bu listeyi döndür. 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
Uzunlukları farklı olabilecek, her satırda bir tane bulunan sıralı listeler
Döndürürinteger-array
her satırdaki tüm değerler, sıralanmış tek bir listede

Kısıtlar

  • 1 ≤ lists.length ≤ 104
  • 1 ≤ lists[i].length ve tüm satırlar birlikte en fazla 104 değer içerir
  • -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
Genel olarak en küçük değer, ikinci satırın ilk değeri olan 1'dir. Ondan sonra satırlar 2, 4 ve 3 ile başlar; bu nedenle sıradaki değer 2'dir ve böyle devam eder. Üçüncü satır 5'ten sonra biter ve sonunda 6, 9 ve 10 kalır.

lock iconGönderirken +14 gizli test

challenge icon

Ek soru

Her satırdan en az bir değer içeren en küçük [a, b] aralığını bulun. Aynı satır başı yığını ve şimdiye kadarki en büyük satır başını kullanarak bunu O(N log k) sürede bulabilir misiniz?

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

Durum 1

Durum 2

Durum 3

Girdi

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

Beklenen

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