Menu
CoddyTech

Merge k Sorted Lists

Recibes k listas de enteros como filas de lists. Cada fila está ordenada en orden no decreciente, las filas pueden tener longitudes diferentes y ninguna fila está vacía.

Combínalas en una sola lista que contenga todos los valores de todas las filas, ordenados en orden no decreciente, y devuélvela. Un valor que aparezca varias veces, en una fila o en varias, aparecerá esa misma cantidad de veces en el resultado.

Función

mergeKLists(lists: integer-2d-array) → integer-array
listsinteger-2d-array
las listas ordenadas, una por fila, de longitudes posiblemente distintas
Devuelveinteger-array
todos los valores de todas las filas, en una lista ordenada

Restricciones

  • 1 ≤ lists.length ≤ 104
  • 1 ≤ lists[i].length, y todas las filas juntas contienen como máximo 104 valores
  • -104 ≤ lists[i][j] ≤ 104
  • Cada fila está ordenada en orden no decreciente.

Ejemplos

Entrada
lists = [[2, 6, 9], [1, 4, 10], [3, 5]]
Salida
[1, 2, 3, 4, 5, 6, 9, 10]
Explicación
Las filas empiezan con 2, 1 y 3, así que 1 va primero. Después, las cabezas son 2, 4 y 3, así que sigue 2, y así sucesivamente. La tercera fila se agota después de 5, dejando 6, 9 y 10.
challenge icon

Para ir más allá

Encuentra el intervalo más pequeño [a, b] que contenga un valor de cada fila. ¿Puede un montículo de los primeros elementos de cada fila y el mayor de ellos hacerlo en O(N log k)?

Restablecer código
def mergeKLists(lists):
    # Escribe el código aquí

Prueba #1

Prueba #2

Prueba #3

Argumento

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

Salida Esperada

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