Menu
CoddyTech

Merge k Sorted Lists

Ricevi k elenchi di interi come righe di lists. Ogni riga è ordinata in ordine non decrescente, le righe possono avere lunghezze diverse e nessuna riga è vuota.

Uniscile in un unico elenco che contenga tutti i valori di tutte le righe, ordinati in ordine non decrescente, e restituiscilo. Un valore che appare più volte, in una riga o in più righe, apparirà altrettante volte nel risultato.

Funzione

mergeKLists(lists: integer-2d-array) → integer-array
listsinteger-2d-array
gli elenchi ordinati, uno per riga, di lunghezze eventualmente diverse
Restituisceinteger-array
tutti i valori di ogni riga, in un unico elenco ordinato

Vincoli

  • 1 ≤ lists.length ≤ 104
  • 1 ≤ lists[i].length e tutte le righe insieme contengono al massimo 104 valori
  • -104 ≤ lists[i][j] ≤ 104
  • Ogni riga è ordinata in ordine non decrescente.

Esempi

Input
lists = [[2, 6, 9], [1, 4, 10], [3, 5]]
Output
[1, 2, 3, 4, 5, 6, 9, 10]
Spiegazione
Le righe iniziano con 2, 1 e 3, quindi 1 viene per primo. Le teste sono poi 2, 4 e 3, quindi segue 2, e così via. La terza riga termina dopo 5, lasciando 6, 9 e 10.
challenge icon

Per approfondire

Trova l'intervallo più piccolo [a, b] che contiene un valore di ogni riga. Un heap delle teste delle righe più la testa più grande può farlo in O(N log k)?

Ripristina il codice
def mergeKLists(lists):
    # Scrivi il codice qui

Test #1

Test #2

Test #3

Argomento

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

Output atteso

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