Я перебирал некоторые из многих вопросов для интервью по кодированию. Мне было интересно, как реализовать очередь, используя два стека в Python. Я работаю над вопросом алгоритма для реализации очереди с двумя стеками для понимания обеих структур данных. у меня ниже:Реализовать очередь с двумя стеками python и проанализировать время работы
class QueueTwoStacks:
def __init__(self):
self.in_stack = []
self.out_stack = []
def enqueue(self, item):
self.in_stack.append(item)
def dequeue(self):
if len(self.out_stack) == 0:
# Move items from in_stack to out_stack, reversing order
while len(self.in_stack) > 0:
newest_in_stack_item = self.in_stack.pop()
self.out_stack.append(newest_in_stack_item)
# If out_stack is still empty, raise an error
if len(self.out_stack) == 0:
raise IndexError("Can't dequeue from empty queue!")
return self.out_stack.pop()
Что является анализ выполнения для этого?
Почему это правда, что мы можем получить O (m) O (m) время выполнения для вызовов функций mm.
Я предполагаю, что имеет реализацию стека и дает O (1) O (1) время толчка и поп?
Я ценю ваше объяснение для этого. Спасибо.