Давайте назовем исходную задачу PN - где N - число измерений.
Предположим, мы знаем решение для P1 - 1-мерной задачи: найдите, перекрывает ли новый интервал заданный набор интервалов.
Как только мы узнаем, как ее решить, мы можем проверить, перекрывается ли новый прямоугольник с набором прямоугольников в каждой из проекций x / y / z.
Таким образом, решение P3 эквивалентно P1_x И P1_y И P1_z.
Для эффективного решения проблемы P1 мы можем использовать отсортированный список. Каждый узел списка будет включать координату и число открытых открытых intetrvals-to-this-координаты.
Предположим, у нас есть следующие интервалы:
[1,5]
[2,9]
[3,7]
[0,2]
тогда список будет выглядеть следующим образом:
{0,1}, {1,2}, {2,2}, {3,3}, {5,2}, {7,1}, {9,0}
если мы получим новый интервал, скажем, [6,7], мы найдем самый большой элемент в списке, который меньше 6: {5,2}, и самый простой элемент, который больше 7: {9,0} .
Так что легко сказать, что новый интервал перекрывается с существующими.
И поиск в отсортированном списке быстрее линейного:)