Хорошо, так как у вас есть максимум и минимум, у меня есть следующая идея:
Вы поддерживаете этот максимум или минимум динамически и имеете список свободных целых чисел.
Сначала вы начинаете с пустого списка и полного диапазона.
Когда кто-то сдает в аренду целое число, диапазон уменьшается в размере на единицу, если список пуст, если мы не берем его из списка.
Если он выпускает свое целое число, есть 2 возможности:
- Он подходит к краю вашего максимального / минимального диапазона, поэтому вы увеличиваете размер диапазонов
- Он находится далеко от диапазона, поэтому вы помещаете его в список
Это должно дать вам возможность поддерживать высокое и низкое число целых чисел при низкой стоимости.
Конечно, вы также можете попытаться сохранить несколько диапазонов для объединения целых чисел, но для этого потребуются более сложные операции.