# 用栈实现队列

请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(pushpoppeekempty):

实现 MyQueue 类:

 

说明:

 

进阶:

 

示例:

输入:
["MyQueue", "push", "push", "peek", "pop", "empty"]
[[], [1], [2], [], [], []]
输出:
[null, null, null, 1, 1, false]

解释:
MyQueue myQueue = new MyQueue();
myQueue.push(1); // queue is: [1]
myQueue.push(2); // queue is: [1, 2] (leftmost is front of the queue)
myQueue.peek(); // return 1
myQueue.pop(); // return 1, queue is [2]
myQueue.empty(); // return false

 

提示:

## template ```python class MyQueue: def __init__(self): """ Initialize your data structure here. """ self.stack_push = [] self.stack_pop = [] def push(self, x: int) -> None: """ Push element x to the back of queue. """ while self.stack_pop: self.stack_push.append(self.stack_pop.pop()) self.stack_push.append(x) def pop(self) -> int: """ Removes the element from in front of queue and returns that element. """ if self.empty(): return None else: while self.stack_push: self.stack_pop.append(self.stack_push.pop()) return self.stack_pop.pop() def peek(self) -> int: """ Get the front element. """ if self.empty(): return None elif not self.stack_pop: return self.stack_push[0] else: return self.stack_pop[-1] def empty(self) -> bool: """ Returns whether the queue is empty. """ return not (self.stack_push or self.stack_pop) # Your MyQueue object will be instantiated and called as such: # obj = MyQueue() # obj.push(x) # param_2 = obj.pop() # param_3 = obj.peek() # param_4 = obj.empty() ``` ## 答案 ```python ``` ## 选项 ### A ```python ``` ### B ```python ``` ### C ```python ```