232. 用栈实现队列
题目:
解法1:两个栈实现队列
思路
队列是先进先出的,栈是先进后出的,所以用两个栈实现队列。一个栈用来当中转,每个元素入栈时都转置,才能满足先进先出。设有栈s1、s2,栈s1用来存放队列中的元素,而栈s2用来当中转。第一个元素入栈时,直接入栈,第二个元素入栈,将s1中的第一个元素先弹出到s2中,将新元素入栈,再将s2中的元素放回到s1,以此类推,每个新元素入栈时,都执行此番操作。而peek()和pop()及isEmpty()等操作直接执行就可以。
代码
class MyQueue {
Deque<Integer> s1;
Deque<Integer> s2;
public MyQueue() {
s1 = new ArrayDeque<Integer>();
s2 = new ArrayDeque<Integer>();
}
public void push(int x) {
int temp;
while(!s1