from collections import deque
class MyStack:
def __init__(self):
self.queue_in = deque()
self.queue_out = deque()
def push(self, x: int) -> None:
self.queue_in.append(x)
def pop(self) -> int:
if self.empty():
return None
for i in range(len(self.queue_in)-1):
self.queue_out.append(self.queue_in.popleft())
self.queue_in, self.queue_out = self.queue_out, self.queue_in
return self.queue_out.pop()
def top(self) -> int:
if self.empty():
return None
return self.queue_in[-1]
def empty(self) -> bool:
return len(self.queue_in) == 0
思路:
此题最好使用双向队列 deque
将数据插入第一个deque, 即queue_in;
pop时,将queue_in 中除了要pop的元素统统插入queue_out;
将queue_in 与 queue_out 元素互换;
此时queue_out中只有一个待pop元素 ;
将其pop即可

本文介绍了一种使用Python的双向队列deque来实现栈的方法。通过两个deque分别作为数据输入和输出队列,实现了栈的基本操作:压栈(push)、弹栈(pop)、获取栈顶元素(top)及判断栈是否为空(empty)。
312

被折叠的 条评论
为什么被折叠?



