算法思想
栈:先进后出
队列:先进先出
题目名字就告诉我们了,怎么做这道题,用两个栈实现一个队列,所以我们直接创建两个栈就可以了
stack1,stack2;
stack1用来存储所有插入的元素,我们要保证先进入stack1的元素先弹出去就可以了;
弹出去的时候,先把stack1中的元素加入到stack2中,然后再由stack2弹出去就达到了先进先出的特性,也就是队列
举例:先加入1,2,3,那么弹出去的时候也应该是1,2,3
1:stack1:1,2,3; stack2:
2:stack1会先把3弹出去,然后把2弹出去,最后是1;
stack1: stack2:3,2,1
3:stack2弹出去的话会先把1弹出去,再把2弹出去,最后是3
java代码
class MyQueue {
Stack<Integer> stack1 = new Stack<>();
Stack<Integer> stack2 = new Stack<>();
/** Initialize your data structure here. */
public MyQueue() {
}
/** Push element x to the back of queue. */
public void push(int x) {
stack1.push(x);
}
/** Removes the element from in front of queue and returns that element. */
public int pop() {
if(stack2.size() == 0)
while(stack1.size() != 0)
stack2.push(stack1.pop());
return stack2.pop();
}
/** Get the front element. */
public int peek() {
if(stack2.size() == 0)
while(stack1.size() != 0)
stack2.push(stack1.pop());
return stack2.peek();
}
/** Returns whether the queue is empty. */
public boolean empty() {
return stack1.empty() && stack2.empty();
}
}
厉害奥