class MyQueue:
def __init__(self):
self.in_stack = []
self.out_stack = []
def push(self, x: int) -> None:
# Всегда добавляем в входной стек
self.in_stack.append(x)
def pop(self) -> int:
# Сначала убеждаемся, что элементы переложены
self.peek()
# Теперь вершина out_stack - это первый элемент очереди
return self.out_stack.pop()
def peek(self) -> int:
# Если выходной стек пуст, перекладываем туда все из входного
if not self.out_stack:
while self.in_stack:
self.out_stack.append(self.in_stack.pop())
# Возвращаем верхний элемент, не удаляя его
return self.out_stack[-1]
def empty(self) -> bool:
# Очередь пуста, только если оба стека пусты
return not self.in_stack and not self.out_stack