Menu
CoddyTech

Merge Intervals

Recibes un conjunto de intervalos, cada uno un rango de números enteros desde un inicio hasta un final. Combina cada grupo de intervalos superpuestos en un solo intervalo que cubra todo el grupo y devuelve los intervalos combinados ordenados por inicio. Los intervalos que solo se tocan, como [1, 4] y [4, 5], se consideran superpuestos.

Los intervalos se reciben en dos arreglos de la misma longitud: el intervalo i es [starts[i], ends[i]]. Devuelves un arreglo 2D, una lista de pares [start, end].

Función

mergeIntervals(starts: integer-array, ends: integer-array) → integer-2d-array
startsinteger-array
el inicio de cada intervalo
endsinteger-array
el final de cada intervalo, en el mismo índice que su inicio
Devuelveinteger-2d-array
los intervalos combinados como pares [start, end], ordenados por start

Restricciones

  • 1 ≤ starts.length == ends.length ≤ 104
  • 0 ≤ starts[i] ≤ ends[i] ≤ 104
  • Los intervalos llegan en cualquier orden.
  • Los intervalos que solo se tocan en un extremo cuentan como superpuestos.

Ejemplos

Entrada
starts = [5, 1, 12, 3]ends = [7, 4, 14, 6]
Salida
[[1, 7], [12, 14]]
Explicación
En orden de inicio, [1, 4] se solapa con [3, 6], que se solapa con [5, 7], así que los tres se convierten en [1, 7]. [12, 14] empieza después de 7 y se queda por su cuenta.
challenge icon

Para ir más allá

Los intervalos llegan ya combinados y ordenados por inicio, y debes añadir un intervalo nuevo. ¿Puedes devolver la lista combinada en tiempo O(n), sin volver a ordenarla?

Restablecer código
def mergeIntervals(starts, ends):
    # Escribe el código aquí

Prueba #1

Prueba #2

Argumentos

starts = [5, 1, 12, 3]
ends = [7, 4, 14, 6]

Salida Esperada

[[1, 7], [12, 14]]