队列是先进先出,栈是先进后出。

232.用栈实现队列
思路:用两个栈实现队列
class MyQueue:
def __init__(self):
self.inStack = []
self.outStack = []
def push(self, x: int) -> None:
self.inStack.append(x)
def pop(self) -> int:
if self.empty():
return None
if self.outStack:
return self.outStack.pop()
else:
for i in range(len(self.inStack)):
self.outStack.append(self.inStack.pop())
return self.outStack.pop()
def peek(self) -> int:
res = self.pop()
self.outStack.append(res)
return res
def empty(self) -> bool:
return not (self.inStack or self.outStack)
# Your MyQueue object will be instantiated and called as such:
# obj = MyQueue()
# obj.push(x)
# param_2 = obj.pop()
# param_3 = obj.peek()
# param_4 = obj.empty()
225. 用队列实现栈
两个队列模拟
使用两个队列。inqueue 用作入栈,outqueue用作出栈。
class MyStack:
def __init__(self):
self.inqueue = deque()
self.outqueue = deque()
def push(self, x: int) -> None:
self.inqueue.append(x)
while self.outqueue:
self.inqueue.append(self.outqueue.popleft())
self.outqueue, self.inqueue = self.inqueue,self.outqueue
def pop(self) -> int:
if self.empty():
return None
return self.outqueue.popleft()
def top(self) -> int:
if self.empty():
return None
return self.outqueue[0]
def empty(self) -> bool:
return not self.outqueue
# Your MyStack object will be instantiated and called as such:
# obj = MyStack()
# obj.push(x)
# param_2 = obj.pop()
# param_3 = obj.top()
# param_4 = obj.empty()
一个队列模拟
思路:将元素先取出来再加入
class MyStack:
def __init__(self):
self.queue = deque()
def push(self, x: int) -> None:
self.queue.append(x)
def pop(self) -> int:
if self.empty():
return None
size = len(self.queue)-1
for i in range(size):
self.queue.append(self.queue.popleft())
return self.queue.popleft()
def top(self) -> int:
if self.empty():
return None
return self.queue[-1]
def empty(self) -> bool:
return not self.queue
# Your MyStack object will be instantiated and called as such:
# obj = MyStack()
# obj.push(x)
# param_2 = obj.pop()
# param_3 = obj.top()
# param_4 = obj.empty()
文章介绍了如何使用两个栈来模拟队列的功能,以及如何用两个队列或一个队列实现栈的操作。在Python中,通过append、pop和popleft等方法,实现了数据结构之间的转换,满足了先进先出和先进后出的特性。

130

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



