Это не вопрос для собеседования как таковой , как я наткнулся на это в своем проекте, но я подумал, что это может быть приличный вопрос.
У вас есть N пар интервалов, скажем, целых чисел. Вы должны идентифицировать все интервалы, которые перекрываются друг с другом за O (N) время. Например, если у вас есть
{1, 3}
{12, 14}
{2, 4}
{13, 15}
{5, 10}
ответ: {1, 3}, {12, 14}, {2, 4}, {13, 15}. Обратите внимание, что вам не нужно группировать их, поэтому результат может быть в любом порядке, как в примере.
Я только что добавил O (N) время, потому что алгоритм KMP принимает O (N) для поиска строки. : D
Лучшее, что я придумал и что я сейчас использую в проекте, это O (N ^ 2). Да, грубая сила довольно печальна, но никто не жалуется, поэтому я не буду рефакторинг. : P Тем не менее, мне было любопытно, есть ли у большего ума более элегантное решение.