Сложность: 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.
😎 Решение:
public class PhoneDirectory {
private boolean[] isSlotAvailable;
public PhoneDirectory(int maxNumbers) {
isSlotAvailable = new boolean[maxNumbers];
for (int i = 0; i < maxNumbers; i++) {
isSlotAvailable[i] = true;
}
}
public int get() {
for (int i = 0; i < isSlotAvailable.length; i++) {
if (isSlotAvailable[i]) {
isSlotAvailable[i] = false;
return i;
}
}
return -1;
}
public boolean check(int number) {
return isSlotAvailable[number];
}
public void release(int number) {
isSlotAvailable[number] = true;
}
}Ставь 👍 и забирай 📚 Базу знаний
