题目:
用栈实现队列:使用栈实现队列的下列操作: push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。
思路:
使用辅助栈。
程序:
class MyQueue: def __init__(self): """ Initialize your data structure here. """ self.myStack = [] self.myAuxiliaryStack = [] def push(self, x: int) -> None: """ Push element x to the back of queue. """ self.myStack.append(x) def pop(self) -> int: """ Removes the element from in front of queue and returns that element. """ if self.empty(): return if len(self.myAuxiliaryStack) == 0: while len(self.myStack) != 0: self.myAuxiliaryStack.append(self.myStack.pop()) return self.myAuxiliaryStack.pop() else: return self.myAuxiliaryStack.pop() def peek(self) -> int: """ Get the front element. """ if self.empty(): return if len(self.myAuxiliaryStack) == 0: while len(self.myStack) != 0: self.myAuxiliaryStack.append(self.myStack.pop()) return self.myAuxiliaryStack[-1] else: return self.myAuxiliaryStack[-1] def empty(self) -> bool: """ Returns whether the queue is empty. """ if len(self.myStack) == 0 and len(self.myAuxiliaryStack) == 0: return True else: return False # 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()