LeetCode---栈和队列
LeetCode
232. 用栈实现队列
解
采用两个栈,加入新元素时先把栈1中的元素全部弹出到栈2中,再把新元素压入到栈1中。然后把栈2中的元素重新压入到栈1中。
class MyQueue:
def __init__(self):
"""
Initialize your data structure here.
"""
# stack用于存放元素
self.stack = []
# stack_middle 作为中间栈,主要是新加入元素时把stack中的元素倒换到stack_middle中,
# 然后再把新元素加入stack,类似汉诺塔的操作
self.stack_middle = []
def push(self, x: int) -> None:
"""
Push element x to the back of queue.
"""
# 加入新元素时,先把stack中元素全部弹出并压入到stack_middle
while self.stack:
self.stack_middle.append(self.stack.pop())
# 新元素压入空stack
self.stack.append(x)
# 把stack_middle中的元素弹出重新压入到stack
while self.stack_middle:
self.stack.append(self.stack_middle.pop())
def pop(self) -> int:
"""
Removes the element from in front of queue and returns that element.
"""
return self.stack.pop() if self.stack else None
def peek(self) -> int:
"""
Get the front element.
"""
return self.stack[