Menu
CoddyTech

Merge k Sorted Lists

Ricevi k liste di numeri 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'unica lista che contenga tutti i valori di tutte le righe, ordinati in ordine non decrescente, e restituiscila. Un valore che compare più volte, in una riga o in più righe, compare 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
Il valore più piccolo in assoluto è 1, il primo valore della seconda riga. Dopo di esso, le righe iniziano con 2, 4 e 3, quindi il successivo è 2, e così via. La terza riga termina dopo 5, lasciando 6, 9 e 10 alla fine.

lock icon+14 test nascosti all’invio

challenge icon

Per approfondire

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

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

Caso 1

Caso 2

Caso 3

Input

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

Atteso

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