Design a phone directory that initially has maxNumbers empty slots that can store numbers. The directory should store numbers, check if a certain slot is empty or not, and empty a given slot.
Implement the PhoneDirectory class:
PhoneDirectory(int maxNumbers) Initializes the phone directory with the number of available slots maxNumbers.
int get() Provides a number that is not assigned to anyone. Returns -1 if no number is available.
bool check(int number) Returns true if the slot number is available and false otherwise.
void release(int number) Recycles or releases the slot number.
Explanation PhoneDirectory phoneDirectory = new PhoneDirectory(3); phoneDirectory.get(); // It can return any available phone number. Here we assume it returns 0. phoneDirectory.get(); // Assume it returns 1. phoneDirectory.check(2); // The number 2 is available, so returntrue. phoneDirectory.get(); // It returns 2, the only number that is left. phoneDirectory.check(2); // The number 2 is no longer available, so returnfalse. phoneDirectory.release(2); // Release number 2 back to the pool. phoneDirectory.check(2); // Number 2 is available again, returntrue.
Constraints:
1 <= maxNumbers <= 104
0 <= number < maxNumbers
At most 2 * 104 calls will be made to get, check, and release.
PhoneDirectory(int maxNumbers) { for (int i = 0; i < maxNumbers; i++) { available.push(i); } } intget(){ if (!available.empty()) { int number = available.front(); used.insert(number); available.pop(); return number; } else { return-1; } } boolcheck(int number){ return !used.count(number); } voidrelease(int number){ if (used.count(number)) { available.push(number); used.erase(number); } } };
/** * Your PhoneDirectory object will be instantiated and called as such: * PhoneDirectory* obj = new PhoneDirectory(maxNumbers); * int param_1 = obj->get(); * bool param_2 = obj->check(number);