НАЙТИ перекрывающиеся встречи в O (n) время?

Мне недавно задали этот вопрос в интервью. Хотя я смог поднятьсяO(n& # xB2;), интервьюер был одержимO(n) решение. Я также проверил несколько других решенийO(n журналnя понял, ноO(n) решение до сих пор не моя чашка чая, которая предполагает встречи, отсортированные по времени начала.

Кто-нибудь может объяснить это?

Problem Statement: Тебе далиn назначения. Каждое назначение содержит время начала и время окончания. Вы должны эффективно перенести все конфликтующие встречи.

Person: 1,2, 3, 4, 5
App Start: 2, 4, 29, 10, 22
App End: 5, 7, 34, 11, 36

Answer: 2x1 5x3

O(n logn) algorithm: отдельно начальная и конечная точка, как это:

2s, 4s, 29s, 10s, 22s, 5e, 7e, 34e, 11e, 36e

затем отсортируйте все эти точки (для простоты предположим, что каждая точка уникальна):

2s, 4s, 5e, 7e, 10s, 11e, 22s, 29s, 34e, 36e

если у нас есть последовательные запуски без конца, то это накладывается: 2s, 4s смежны, так что есть перекрытие

Мы будем вести подсчет & quot; s & quot; и каждый раз, когда мы сталкиваемся с ним, +1, а когда встречается e, мы уменьшаем счет на 1.

Ответы на вопрос(5)

Ваш ответ на вопрос