Menu
CoddyTech

Merge k Sorted Lists

Du erhältst k Listen von Ganzzahlen als Zeilen von lists. Jede Zeile ist in nicht absteigender Reihenfolge sortiert, die Zeilen können unterschiedlich lang sein, und keine Zeile ist leer.

Führe sie zu einer Liste zusammen, die jeden Wert aus jeder Zeile enthält, in nicht absteigender Reihenfolge sortiert ist, und gib sie zurück. Ein Wert, der mehrmals vorkommt, in einer oder mehreren Zeilen, kommt entsprechend oft im Ergebnis vor.

Funktion

mergeKLists(lists: integer-2d-array) → integer-array
listsinteger-2d-array
die sortierten Listen, eine pro Zeile, die möglicherweise unterschiedlich lang sind
Gibt zurückinteger-array
alle Werte aus allen Zeilen in einer sortierten Liste

Einschränkungen

  • 1 ≤ lists.length ≤ 104
  • 1 ≤ lists[i].length, und alle Zeilen zusammen enthalten höchstens 104 Werte
  • -104 ≤ lists[i][j] ≤ 104
  • Jede Zeile ist in nicht absteigender Reihenfolge sortiert.

Beispiele

Eingabe
lists = [[2, 6, 9], [1, 4, 10], [3, 5]]
Ausgabe
[1, 2, 3, 4, 5, 6, 9, 10]
Erklärung
Der kleinste Wert insgesamt ist 1, der erste Wert der zweiten Zeile. Danach beginnen die Zeilen mit 2, 4 und 3, also kommt als Nächstes 2 und so weiter. Die dritte Zeile endet nach 5, sodass am Schluss 6, 9 und 10 übrig bleiben.

lock icon+14 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

Finde den kleinsten Bereich [a, b], der mindestens einen Wert aus jeder Zeile enthält. Kann derselbe Heap der Zeilenköpfe zusammen mit dem bisher größten Kopf ihn in O(N log k) finden?

Code zurücksetzen
def mergeKLists(lists):
    # Schreibe hier den Code
Testfälle

Fall 1

Fall 2

Fall 3

Eingabe

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

Erwartet

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