题目链接:https://leetcode-cn.com/problems/implement-queue-using-stacks/
难度:简单
描述:
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):
实现MyQueue类:
void push(int x)将元素x推到队列的末尾int pop()从队列的开头移除并返回元素int peek()返回队列开头的元素boolean empty()如果队列为空,返回true;否则,返回false
题解
思路:
维护两个栈stk_in与stk_out。push(x):直接将x推入stk_in中pop():当stk_out非空时,直接从stk_out弹出并返回元素,否则将stk_in中的元素依次弹出并push到stk_out中。peek():若stk_out非空,返回stk_out顶部元素,否则返回stk_in底部元素empty():判断stk_in与stk_out是否同时为空。
class MyQueue:def __init__(self):self.stk_in = []self.stk_out = []def push(self, x: int) -> None:self.stk_in.append(x)def pop(self) -> int:if self.stk_out == []:while self.stk_in:self.stk_out.append(self.stk_in.pop())return self.stk_out.pop()def peek(self) -> int:if self.stk_out:return self.stk_out[-1]else:return self.stk_in[0]def empty(self) -> bool:return self.stk_in == [] and self.stk_out == []
