-
225 用队列实现栈
-
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/implement-stack-using-queues -
使用队列实现栈的下列操作:
push(x) – 元素 x 入栈
pop() – 移除栈顶元素
top() – 获取栈顶元素
empty() – 返回栈是否为空
注意:
你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。
你所使用的语言也许不支持队列。 你可以使用 list 或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。
你可以假设所有操作都是有效的(例如, 对一个空的栈不会调用 pop 或者 top 操作)。
解题思路:【python3】两个队列: 队列是先进先出,栈是先进后出,利用my_stack队列储存栈元素,要求队首是新加入的元素,队尾是最早加入的元素。每当新的元素进栈时,先加入in_que队列,然后将my_stack所有元素依次弹出加入in_que队列后,此时in_que队列新加入的元素位于队首,将其与my_stack对调,此时执行my_stack.pop()就可弹出最新加入的元素。push操作完成了,pop,top,empty操作针对my_stack进行即可。
Notes: python3 中队列 my_queue = collections.deque(), my_queue.popleft(), .append(x),my_queue[0]
, c++中 queue<int> my_queue, my_queue.pop(), .push(x), .front()
。
# python3
class MyStack:
def __init__(self):
"""
Initialize your data structure here.
"""
self.my_stack= collections.deque()
self.in_que = collections.deque()
def push(self, x: int) -> None<