Dada una lista de intervalos, realice la unión de ellos y reduzca las superposiciones. Eso significa que las partes superpuestas se reducen. ( [a, b] U [c, d] = [a, d]
si b > c
) Suponiendo todo a <b en todos los intervalos [a, b]
. Implementar en función de una lista de intervalos de entrada -> lista de intervalos de salida. El código más corto gana. No puede usar ninguna biblioteca existente.
Aclaraciones:
- Los intervalos abiertos y cerrados no se distinguen.
- Intervalos para números reales, no enteros. (
[2, 3], [4, 5] -> [2, 3], [4, 5]
) - No es necesario ordenar los intervalos de salida
- El orden si las entradas no importan
- Las entradas ilegales son solo
[a, b]
dondeb >= a
, no tiene nada que ver con el orden de los intervalos de entrada y el número de intervalos de entrada. - No es necesario que muestre un mensaje de error sobre comportamientos indefinidos
Ejemplos (con líneas numéricas)
[2, 4], [7, 9] --> [2, 4], [7, 9]
234
789
-> 234 789
[1, 5], [2, 10] --> [1, 10] (overlapping [2, 5] reduced)
12345
234567890
-> 1234567890
[2, 4], [3, 6], [8, 9] -> [2, 6], [8, 9]
234
3456
89
-> 23456 89
[4, 2], [2, 2] -> (undefined behavior: against the assumption)