Führen Sie die Vereinigung der Intervalle anhand einer Liste von Intervallen durch und reduzieren Sie die Überlappungen. Das heißt, überlappende Teile werden reduziert. ( [a, b] U [c, d] = [a, d]if b > c) Angenommen alle a <b in allen Intervallen [a, b]. Implementieren als Funktion einer Liste von Eingabeintervallen -> Liste von Ausgabeintervallen. Kürzester Code gewinnt. Sie können keine vorhandenen Bibliotheken verwenden.
Klarstellungen:
- Offene und geschlossene Intervalle werden nicht unterschieden.
- Intervalle für reelle Zahlen, keine ganzen Zahlen. (
[2, 3], [4, 5] -> [2, 3], [4, 5]) - Ausgabeintervalle müssen nicht sortiert werden
- Die Reihenfolge der Eingaben spielt keine Rolle
- Illegale Eingaben sind nur
[a, b]wob >= a, es hat nichts mit der Reihenfolge der Eingabeintervalle und der Anzahl der Eingabeintervalle zu tun. - Bei undefiniertem Verhalten muss keine Fehlermeldung angezeigt werden
Beispiele (mit Zahlenlinien)
[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)