题目:
用栈实现队列:使用栈实现队列的下列操作: 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()
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()