Airbnb | Phone screen | Design a queue
Anonymous User
2692

Build a queue class with the enqueue and dequeue methods. The queue can store an UNLIMITED number of elements. However, the language you are using has a bug which does not allow arrays to store more than 5 elements, how would you build that?

class queue:
    
    def __init__(self, size):
        self.size = size
        self.queue = list()
        self.buffer = []
        
    def enqueue(self, element):
        
        if len(self.buffer) == self.size:
            self.queue.append(self.buffer)
            self.buffer = []
            
        self.buffer.append(element)
        
        print(' buffer' + str(self.buffer))
        print(' queue')
        print(self.queue)
        
    def dequeue(self):
        
        element = None
        if self.queue:
            temp_buffer =  self.queue[0]  #pop head 
            if temp_buffer:
                element = temp_buffer.pop(0)
                if not temp_buffer:
                    self.queue.pop(0)
                else:
                    self.queue[0] = temp_buffer
            
        return element
        
    
temp = queue(5)
temp.enqueue(1)
temp.enqueue(2)
temp.enqueue(3)
temp.enqueue(4)
temp.enqueue(5)
temp.enqueue(6)
temp.enqueue(7)
temp.enqueue(8)
temp.enqueue(9)
temp.enqueue(10)
temp.enqueue(11)

for i in range(6):
    print('dequeue ' + str(temp.dequeue()))
Comments (7)