Как @Anonymouse предложил, вы можете использовать 96 бит, то есть 12 байтов, для представления дня, поэтому 30-минутное собрание, начинающееся в 1:00, будет представлено как 110000, и вы можете использовать простые |работа со всеми числами.
Время O (n) Память O (12n) байт.Теоретически это было бы намного быстрее.
При условии собрания [время начала в минуту, время окончания в минуту].
Слияние двух собраний (Sa & Sb) в Sc при наложении
Sc [минимум (SA-начало, SB-начало), максимум (SA-конец, SB-конец)] и хранение объединенных собраний в коллекции.Если они не перекрываются, вы можете хранить их отдельно.
Мы знаем, что общее количество минут в дне = 24 * 60 = 1440 Если у вас есть 15-минутная единица, тогда она становится 24 * 60/15 = 96 (меньше 1 байта).)
Таким образом, вам нужно 2 байта на расписание, т. Е. Начало байта, конец.
Время O (n) Память O (2n) байта
Оба подхода выиграны 'не работает, если вам нужно удалить встречу позже.Для этого вам определенно стоит хранить все оригинальное расписание встреч отдельно.