Menu
CoddyTech

Merge Intervals

Un intervalo es un rango de números enteros con un inicio y un fin. Los intervalos que comparten al menos un punto van juntos, y también los que solo se tocan: [1, 4] y [4, 5] se convierten en [1, 5]. El objetivo es reemplazar cada grupo de intervalos superpuestos por un solo intervalo que cubra todo el grupo.

El truco está en el orden. Una vez ordenados los intervalos por inicio, todo lo que se superpone con el intervalo que estás construyendo viene justo después. Recorre la lista ordenada y conserva el último intervalo fusionado: si el siguiente inicio es menor o igual que su fin, extiende el fin; si no, hay un espacio real y comienza un nuevo intervalo. La ordenación cuesta O(n log n) y el recorrido es de una sola pasada.

Escribe una función llamada mergeIntervals que reciba dos arreglos de enteros, starts y ends, y devuelva los intervalos fusionados.

Los intervalos se reciben como dos arreglos porque no todos los lenguajes de aquí aceptan un arreglo bidimensional como entrada: el intervalo i es [starts[i], ends[i]], y ambos arreglos tienen la misma longitud. Los intervalos no están ordenados.

Fusiona cada grupo de intervalos superpuestos. Los intervalos que solo se tocan en un extremo también cuentan como superpuestos. Devuelve los intervalos fusionados como un arreglo bidimensional [[start, end], ...], ordenados por inicio.

Por ejemplo, starts = [5, 1, 12, 3] y ends = [7, 4, 14, 6] describen [5, 7], [1, 4], [12, 14] y [3, 6], que se fusionan en [[1, 7], [12, 14]].

Restricciones: 1 <= starts.length == ends.length <= 10^4, 0 <= starts[i] <= ends[i] <= 10^4.

Función

mergeIntervals(arg1: integer-array, arg2: integer-array) → integer-2d-array
arg1integer-array
arg2integer-array
Devuelveinteger-2d-array

Ejemplos

Entrada
arg1 = [5, 1, 12, 3]arg2 = [7, 4, 14, 6]
Salida
[[1, 7], [12, 14]]

lock icon+12 pruebas ocultas al enviar

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

Caso 1

Caso 2

Entrada

arg1 = [5, 1, 12, 3]
arg2 = [7, 4, 14, 6]

Esperado

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