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 distintas longitudes 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 aparece varias veces, en una fila o en varias, aparece 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 diferentes
Devuelveinteger-array
todos los valores de cada fila, en una sola 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
El valor más pequeño en general es 1, el primer valor de la segunda fila. Después, las filas empiezan con 2, 4 y 3, así que el siguiente es 2, y así sucesivamente. La tercera fila se acaba después de 5, por lo que quedan 6, 9 y 10 al final.

lock icon+14 pruebas ocultas al enviar

challenge icon

Para ir más allá

Encuentra el intervalo más pequeño [a, b] que contenga al menos un valor de cada fila. ¿Puede el mismo montículo de cabeceras de fila, junto con la cabecera más grande hasta el momento, encontrarlo en O(N log k)?

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

Caso 1

Caso 2

Caso 3

Entrada

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

Esperado

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