# 用队列实现栈

请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(pushtoppopempty)。

实现 MyStack 类:

 

注意:

 

示例:

输入:
["MyStack", "push", "push", "top", "pop", "empty"]
[[], [1], [2], [], [], []]
输出:
[null, null, null, 2, 2, false]

解释:
MyStack myStack = new MyStack();
myStack.push(1);
myStack.push(2);
myStack.top(); // 返回 2
myStack.pop(); // 返回 2
myStack.empty(); // 返回 False

 

提示:

 

进阶:你能否实现每种操作的均摊时间复杂度为 O(1) 的栈?换句话说,执行 n 个操作的总时间复杂度 O(n) ,尽管其中某个操作可能需要比其他操作更长的时间。你可以使用两个以上的队列。

## template ```python class MyStack: def __init__(self): """ Initialize your data structure here. """ self.queue = [] self.help = [] def push(self, x): """ Push element x onto stack. """ while len(self.queue) > 0: self.help.append(self.queue.pop(0)) self.queue.append(x) while len(self.help) > 0: self.queue.append(self.help.pop(0)) def pop(self): """ Removes the element on top of the stack and returns that element. """ de = self.queue.pop(0) return de def top(self): """ Get the top element. """ de = self.queue[0] return de def empty(self) -> bool: """ Returns whether the stack is empty. """ if len(self.queue) == 0: return True return False ``` ## 答案 ```python ``` ## 选项 ### A ```python ``` ### B ```python ``` ### C ```python ```