как эффективно объединить целые диапазоны в поток?

Нам дается непрерывный поток целочисленных диапазонов, таких как [1,3], [5,10 ], [2,6], ... когда приходит каждый новый диапазон, нам нужно проверять существующие диапазоны и видеть, не перекрывается ли он с каким-либо существующим диапазоном, и если какое-либо перекрытие обнаруживается, все перекрывающиеся диапазоны удаляются, а вместо него вставляется объединенный диапазон. Для этого нам нужен эффективный алгоритм. Обратите внимание, что диапазон появляется по одному, образуя поток ...

Мне задавали этот вопрос во время интервью. Идеи?

Цель состоит в том, чтобы объединить перекрывающиеся диапазоны в один. например, если у нас есть 3 диапазона, идущие в следующем порядке: [1,3], [2,6], [5,10]. Затем мы сначала объединяем первые два в [1,6], затем объединяем с третьим, и он становится [1,10].

10
задан Robin 20 January 2011 в 14:42
поделиться