À partir d'une liste d'intervalles, effectuez l'union de ceux-ci et réduisez les chevauchements. Cela signifie que les parties qui se chevauchent sont réduites. ( [a, b] U [c, d] = [a, d]si b > c) En supposant tout a <b dans tous les intervalles [a, b]. Implémenter en fonction d'une liste d'intervalles d'entrée -> liste d'intervalles de sortie. Le code le plus court gagne. Vous ne pouvez utiliser aucune bibliothèque existante.
Clarifications:
- Les intervalles ouverts et fermés ne sont pas distingués.
- Intervalles pour des nombres réels, pas des entiers. (
[2, 3], [4, 5] -> [2, 3], [4, 5]) - Pas besoin de trier les intervalles de sortie
- L'ordre si les entrées n'ont pas d'importance
- Les entrées illégales ne sont
[a, b]là queb >= a, cela n'a rien à voir avec l'ordre des intervalles d'entrée et le nombre d'intervalles d'entrée. - Vous n'avez pas besoin d'afficher un message d'erreur sur les comportements non définis
Exemples (avec des lignes numériques)
[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)