Недавно я задал этот вопрос в интервью. Несмотря на то, что я смог найти решение O (n²), интервьюер был одержим решением O (n). Я также проверил несколько других решений O (n logn), которые я понял, но O (n) решение по-прежнему не является моей чашкой чая, которая предполагает встречи, отсортированные по времени начала.
Кто-нибудь может это объяснить?
Заявление о проблемах: Вам назначены n назначений. Каждое назначение содержит время начала и время окончания. Вы должны эффективно перенастраивать все конфликтующие встречи.
Лицо: 1,2, 3, 4, 5
Начало приложения: 2, 4, 29, 10, 22
App End: 5, 7, 34, 11, 36Ответ: 2x1 5x3
Алгоритм O (n logn): отдельный начальный и конечный пункт следующим образом:
2s, 4s, 29s, 10s, 22s, 5e, 7e, 34e, 11e, 36e
затем отсортировать все эти точки (для простоты пусть каждая точка уникальна):
2s, 4s, 5e, 7e, 10s, 11e, 22s, 29s, 34e, 36e
Если у нас есть последовательные пуски без концов, то он перекрывается: 2s, 4s смежны, поэтому перекрытие есть
Мы будем держать счетчик "s", и каждый раз, когда мы сталкиваемся с ним, будет +1, а когда встречается e, мы уменьшаем счет на 1.