Задав список интервалов, выполните их объединение и уменьшите наложения. Это означает, что перекрывающиеся части уменьшаются. ( [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)