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即可