Вы можете выполнить сортировку по левому и правому краю одновременно и использовать оба списка, чтобы исключить перекрывающиеся значения. Если список отсортирован по левому краю, то ни один из интервалов справа от правого конца тестового диапазона не может перекрываться. Если список отсортирован по правому краю, то ни один из интервалов слева от левого конца тестового диапазона не может перекрываться.
Например, если интервалы
[1,4], [3,6], [4,5], [2,8], [5,7], [1,2], [2,2.5]
и вы обнаруживаете перекрытие с [3,4]
, затем сортируете по левому концу и отмечаете положение правого конца теста (с правым концом чуть больше его значения, так что 4
входит в диапазон)
[1,4], [1,2], [2,2.5], [2,8], [3,6], [4,5], *, [5,7]
вы знаете, [5,7]
не может перекрываться, затем сортировка по правому концу и маркировка позиции левого конца теста
[1,2], [2,2.5], *, [1,4], [4,5], [3,6], [5,7], [2,8]
вы знаете [1,2]
и [2,2.5]
не могут перекрываться
Не уверен, насколько эффективно это будет, так как вам придется выполнить два сортировки и поиска.