Имеется блок хранения, который имеет емкость для N элементов. Первоначально этот блок пуст. Пространство расположено линейно, то есть одно рядом с другим в линии. Каждое пространство для хранения имеет число, увеличивающееся до N.
Когда кто-то бросает свой пакет, ему присваивается первое доступное пространство. Пакеты также могут быть подняты, в этом случае пространство становится вакантным. Пример: если общая емкость равна 4. и 1 и 2 заполнены, третьему лицу, которому необходимо войти, будет присвоено пространство 3. Если 1, 2 и 3 были заполнены, а 2-е место станет вакантным, следующий человек, назначено пространство 2.
Упавшие пакеты имеют 2 уникальных свойства, предназначенных для немедленной идентификации. Сначала они кодируются цветом на основе их содержимого, а во-вторых, им присваивается уникальный идентификационный номер (UIN).
Мы хотим запросить систему:
- Когда цвет ввода, покажите все UIN, связанные с этим цветом.
- Когда цвет ввода, покажите все номера, на которых размещены эти пакеты (номер пространства для хранения).
- Показывает, где находится элемент с заданным UIN, т.е. номер пространства памяти.
Я хотел бы знать, как использовать Data Structures для этого случая, чтобы система работала максимально эффективно? И мне не дается, какая из этих операций наиболее частая, что означает, что мне придется оптимизировать для всех случаев.
Пожалуйста, обратите внимание, хотя в процессе запроса напрямую не запрашивается номер пространства для хранения, но когда элемент удаляется из хранилища, он удаляется путем запроса из номера пространства хранения.