Я столкнулся с этим вопросом во время подготовки к интервью долго назад и подумал, что это интересная проблема для решения. Проблема заключается в следующем: Найдите покрытие набора интервалов Например - [1,4], [-2,3), [9,10]: выход должен быть 7 (набор интервалов - 2, -1,0,1,2,3,9).Найти охват набора интервалов
Мой первоначальный подход состоял в том, чтобы перебирать множество интервалов; добавьте число в каждом интервале в список Sorted Linked. Если какой-либо номер уже существует в отсортированном списке, пропустите его. Я считаю, что это занимает время O (N^2) и потребляет пространство O (N), поэтому мы, вероятно, могли бы сделать лучше.
В качестве альтернативы мы можем использовать Interval BST. Однако это, по-видимому, в основном используется для выяснения, существует ли перекрытие с заданным интервалом (который принимает O (lgn)). Обнаружение его охвата, похоже, снова примет O (n^2). Можем ли мы лучше, чем O (n^2)?
@j_random_hacker да, это будет выполнено, вы даже проверили код? вы видите, что я добавляю часового? http://ideone.com/wCVAWJ – Pavel
@j_random_hacker помните, что это не прямоугольники, это интервалы, поэтому, когда вы вводите данные, ваш L всегда меньше или равен R. Также прямоугольники не могут иметь отрицательный параметры. – Pavel
Я пропустил часового. Не знаете, почему вы просите меня помнить, что это не прямоугольники - их не так много, я должен держать их в голове? –