Видеорегистратор должен хранить список программ для записи. Каждая программа имеет время начала и продолжительность. Эти данные должны храниться таким образом, чтобы система могла быстро определить, не конфликтует ли новый запрос на запись с существующими запланированными записями.
Проблема в том, что просто посмотреть, есть ли шоу с конфликтующим временем начала, неадекватно, потому что конец более длинной программы может совпадать с более короткой. Я предполагаю, что можно создать структуру данных, которая отслеживала бы доступность каждого временного среза, возможно, с полчасовой детализацией, но это не получилось бы, если бы мы не могли предположить, что все шоу начинаются и заканчиваются на получасовой границе, и отслеживание на минутном уровне кажется неэффективным, как в хранилище, так и в поиске.
Существует ли структура данных, позволяющая выполнять запросы по диапазону, когда вы задаете нижнюю и верхнюю границы, и она возвращает коллекцию всех элементов, которые попадают в этот диапазон или перекрывают его?