Design Phone Directory
Problem: Design Phone Directory
Code in Python:
class PhoneDirectory(object):
def __init__(self, maxNumbers):
"""
Initialize your data structure here
@param maxNumbers - The maximum numbers that can be stored in the phone directory.
:type maxNumbers: int
"""
self.availability = [True] * maxNumbers
self.numbers = range(maxNumbers)
def get(self):
"""
Provide a number which is not assigned to anyone.
@return - Return an available number. Return -1 if none is available.
:rtype: int
"""
if self.numbers:
self.availability[self.numbers[0]] = False
res = self.numbers[0]
self.numbers = self.numbers[1:]
return res
return -1
def check(self, number):
"""
Check if a number is available or not.
:type number: int
:rtype: bool
"""
return self.availability[number]
def release(self, number):
"""
Recycle or release a number.
:type number: int
:rtype: void
"""
if self.availability[number] == False:
self.availability[number] = True
self.numbers.append(number)
# Your PhoneDirectory object will be instantiated and called as such:
# obj = PhoneDirectory(maxNumbers)
# param_1 = obj.get()
# param_2 = obj.check(number)
# obj.release(number)