225.用队列实现栈

https://leetcode-cn.com/problems/implement-stack-using-queues/

比用栈实现队列稍简单些,用python内置的queue,只有两个操作:get和put,分别是取队头元素和在队尾插入,还有一个qsize()返回队大小

入栈push(x):直接入队,栈顶更新为x

出栈pop:栈是先进后出,从队列视角(先进先出)也就是将队尾(最后进的元素)出队。设队大小为size,则出队再入队size-1次,此时队尾移到队头,再出队

栈顶top:即队尾

栈空:即队空

import queue
class MyStack:

    def __init__(self):
        self.q = queue.Queue()	# 队列
        self.t = None	# 栈顶

    def push(self, x: int) -> None:
        self.q.put(x)
        self.t = x	#队尾变化,栈顶要更新

    def pop(self) -> int:
        for _ in range(self.q.qsize() - 1):
            x = self.q.get()
            self.q.put(x)
            self.t = x	#队尾变化,栈顶要更新
        return self.q.get()

    def top(self) -> int:
        return self.t

    def empty(self) -> bool:
        return self.q.qsize() == 0

最后更新于