题目要求用队列来实现栈。
我使用Python语言中的 queue.Queue:
其中没有获取栈顶元素的方法,但是我们可以使用先pop()后push(x)的方法来模拟top()。
Python 队列(Queue)用法# 介绍了Queue的一些方法
代码实现
一个队列-》栈
from queue import Queueclass MyStack(object):def __init__(self):"""Initialize your data structure here."""#q1作为进栈出栈,q2作为中转站self.q=Queue()def push(self, x):"""Push element x onto stack.:type x: int:rtype: void"""self.q.put(x)def pop(self):"""Removes the element on top of the stack and returns that element.:rtype: int"""size=self.q.qsize()for i in range(size-1):# 关键在此self.q.put(self.q.get())return self.q.get()def top(self):"""Get the top element.:rtype: int"""size=self.q.qsize()for i in range(size-1):self.q.put(self.q.get())t=self.q.get()self.q.put(t)return tdef empty(self):"""Returns whether the stack is empty.:rtype: bool"""return self.q.empty()
其他方法
[LeetCode] Implement Stack using Queues 用队列来实现栈 # 介绍了两种方法
这里不详细说明了,只说简单的思路。
- 两个队列-》栈
多维护一个队列,存储最后进来的数,在top()或者pop()时可以避免一次队列的循环。
- 每次push的时候把现有队列翻转,模拟栈
