Какой алгоритм использовать для поиска максимального пересечения множества отрезков?
Есть задача:
В музее регистрируется в течение дня время прихода и ухода каждого посетителя. Таким образом за день получены N пар значений, где первое значение в паре показывает время прихода посетителя и второе значения - время его ухода. Найти промежуток времени, в течение которого в музее одновременно находилось максимальное число посетителей.
Существует ли общеизвестный алгоритм для решения подобных задач?
Дерево отрезков для суммы подходит для решения этой задачи?
@DmitriyEntelis у меня есть предположение, что эту задачу можно решить деревом отрезков для суммы. Вот хотел проверить свое предположение. qps.ru/Bd6ki
раз не требуется точность, создаёте массив на 24*60 интеджеров, и каждым отрезком заполняете его прибавляя по единице к каждому элементу. потом проходитесь по полученному массиву, и находите максимум. O(n)
O(n*n) в каком это случае может получиться? n это количество записей а не записей или минут, и есть максимум количества минут. поэтому O(n*n) получится никак не может.
Если не нужна идеальная точность, то можно день принять за 5* 228 минут(24 часа- ось x) и каждые пять минут проверять, сколько отрезков-посетителей в эти 5 минут входят. Потом из результатов искать максимум.
@isxaker чтобы "increment numberOfCalls if time value marked as Start" я так понимаю нужен цикл, а значит проверять каждую секунду (или каждые пять минут, как я написал)