Menu
CoddyTech

Merge k Sorted Lists

Kamu mendapatkan k list bilangan bulat sebagai baris-baris dari lists. Setiap baris diurutkan dalam urutan tidak menurun, panjang baris bisa berbeda, dan tidak ada baris yang kosong.

Gabungkan semuanya menjadi satu list yang memuat setiap nilai dari semua baris, diurutkan dalam urutan tidak menurun, lalu kembalikan list tersebut. Nilai yang muncul beberapa kali, dalam satu baris atau beberapa baris, muncul sebanyak itu juga dalam hasilnya.

Fungsi

mergeKLists(lists: integer-2d-array) → integer-array
listsinteger-2d-array
list yang sudah diurutkan, satu per baris, dengan panjang yang mungkin berbeda-beda
Mengembalikaninteger-array
setiap nilai dari semua baris, dalam satu list yang diurutkan

Batasan

  • 1 ≤ lists.length ≤ 104
  • 1 ≤ lists[i].length, dan semua baris secara keseluruhan memuat paling banyak 104 nilai
  • -104 ≤ lists[i][j] ≤ 104
  • Setiap baris diurutkan secara tidak menurun.

Contoh

Input
lists = [[2, 6, 9], [1, 4, 10], [3, 5]]
Output
[1, 2, 3, 4, 5, 6, 9, 10]
Penjelasan
Baris-baris dimulai dengan 2, 1, dan 3, jadi 1 muncul lebih dulu. Setelah itu, elemen pertama pada baris-baris tersebut adalah 2, 4, dan 3, jadi 2 muncul berikutnya, dan seterusnya. Baris ketiga habis setelah 5, menyisakan 6, 9, dan 10.
challenge icon

Pertanyaan lanjutan

Temukan rentang terkecil [a, b] yang memuat nilai dari setiap baris. Bisakah heap berisi nilai awal setiap baris ditambah nilai awal terbesar melakukannya dalam O(N log k)?

Reset kode
def mergeKLists(lists):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

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