Давши перелік інтервалів, виконайте об'єднання їх та зменшіть перекриття. Це означає, що деталі, що перекриваються, зменшуються. ( [a, b] U [c, d] = [a, d]якщо b > c) Припускаючи всі a <b через усі проміжки часу [a, b]. Реалізуйте як функцію списку вхідних інтервалів -> переліку вихідних інтервалів. Найкоротший код виграє. Ви не можете використовувати жодні існуючі бібліотеки.
Роз'яснення:
- Відкриті та закриті інтервали не розрізняють.
- Інтервали для дійсних чисел, а не цілих чисел. (
[2, 3], [4, 5] -> [2, 3], [4, 5]) - Не потрібно сортувати інтервали виводу
- Порядок, якщо входи не мають значення
- Незаконні входи є лише
[a, b]тамb >= a, де це не має нічого спільного з порядком вхідних інтервалів та кількістю вхідних інтервалів. - Не потрібно показувати повідомлення про помилку щодо невизначеної поведінки
Приклади (з числовими рядками)
[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)