225. Implement Stack using Queues
Question
Implement a last-in-first-out (LIFO) stack using only two queues. The implemented stack should support all the functions of a normal stack (
push
,top
,pop
, andempty
).Implement the
MyStack
class:
void push(int x)
Pushes element x to the top of the stack.
int pop()
Removes the element on the top of the stack and returns it.
int top()
Returns the element on the top of the stack.
boolean empty()
Returnstrue
if the stack is empty,false
otherwise.Notes:
- You must use only standard operations of a queue, which means that only
push to back
,peek/pop from front
,size
andis empty
operations are valid.- Depending on your language, the queue may not be supported natively. You may simulate a queue using a list or deque (double-ended queue) as long as you use only a queue’s standard operations.
Solution
用两个队列实现栈。一个队列存放压入的元素。
push()
将当前元素加入到第一个队列。
top() & pop()
当需要挤出或者查看栈顶时,第一个队列只保留一个元素,其余元素加入第二个队列。最后一个元素就是栈顶。当第一个队列为空时,交换第一个队列与第二个队列。
empty()
返回两个队列是否均为空。
Code
1 | class MyStack { |