232.用栈实现队列
232. 用栈实现队列 - 力扣(LeetCode)
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push
、pop
、peek
、empty
):
实现 MyQueue
类:
void push(int x)
将元素 x 推到队列的末尾int pop()
从队列的开头移除并返回元素int peek()
返回队列开头的元素boolean empty()
如果队列为空,返回true
;否则,返回false
解题思路:
构建两个栈,pop时将in栈元素,顺次添加到out栈中,对out栈pop
class MyQueue():
def __init__(self):
self.stack_in = []
self.stack_out = []
def push(self,x):
self.stack_in.append(x)
def pop(self):
if self.empty():
return None
if not self.stack_out:
for _ in range(len(self.stack_in)):
self.stack_out.append(self.stack_in.pop())
return self.stack_out.pop()
def peek(self):
if self.empty():
return None
ans = self.pop()
self.stack_out.append(ans)
return ans
def empty(self):
return not (self.stack_in or self.stack_out)
225.用队列实现栈
225. 用队列实现栈 - 力扣(LeetCode)
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push
、top
、pop
和 empty
)。
实现 MyStack
类:
void push(int x)
将元素 x 压入栈顶。int pop()
移除并返回栈顶元素。int top()
返回栈顶元素。boolean empty()
如果栈是空的,返回true
;否则,返回false
。
解题思路:
直接使用python内置函数collections中deque
class MyStack():
def __init__(self):
self.deque = deque()
def push(self,x):
self.deque.append(x)
def pop(self):
if self.empty():
return None
return self.deque.pop()
def top(self):
if self.empty():
return None
return self.deque[-1]
def empty(self):
return not len(self.deque)
标签:return,day9,队列,self,pop,转栈,stack,empty
From: https://www.cnblogs.com/lzj2023/p/17891924.html