Сложность: medium
Создайте телефонный справочник, который изначально имеет maxNumbers пустых слотов для хранения номеров. Справочник должен хранить номера, проверять, пуст ли определенный слот, и освобождать данный слот.
Реализуйте класс PhoneDirectory:
PhoneDirectory(int maxNumbers) Инициализирует телефонный справочник с количеством доступных слотов maxNumbers.
int get() Предоставляет номер, который никому не назначен. Возвращает -1, если номера недоступны.
bool check(int number) Возвращает true, если слот доступен, и false в противном случае.
void release(int number) Перераспределяет или освобождает номер слота.
Пример:
Input
["PhoneDirectory", "get", "get", "check", "get", "check", "release", "check"]
[[3], [], [], [2], [], [2], [2], [2]]
Output
[null, 0, 1, true, 2, false, null, true]
👨💻 Алгоритм:
1⃣Инициализировать массив isSlotAvailable размером maxNumbers, установив значение true во всех индексах.
2⃣Метод get(): Проходить по массиву isSlotAvailable. Если найдется true на каком-либо индексе, установить isSlotAvailable[i] = false и вернуть i. Если доступных слотов нет, вернуть -1.
Метод check(number): Вернуть значение isSlotAvailable[number].
3⃣Метод release(number): Установить isSlotAvailable[number] = true.
😎 Решение:
class PhoneDirectory {
constructor(maxNumbers) {
this.isSlotAvailable = new Array(maxNumbers).fill(true);
}
get() {
for (let i = 0; i < this.isSlotAvailable.length; i++) {
if (this.isSlotAvailable[i]) {
this.isSlotAvailable[i] = false;
return i;
}
}
return -1;
}
check(number) {
return this.isSlotAvailable[number];
}
release(number) {
this.isSlotAvailable[number] = true;
}
}Ставь 👍 и забирай 📚 Базу знаний
