- 算法
辅助栈 - 核心思想
利用辅助栈,原始栈用于push,辅助栈用于pop。每当有pop时,如果辅助栈中有数据,则直接pop。如果没有,则将原始栈中数据全部pop进辅助栈中。
此外对于实现类型的题,需要首先声明全局变量,在构造器里需要对于全局变量进行赋值。 3. 代码
class MyQueue {
Stack<Integer> push;
Stack<Integer> pop;
public MyQueue() {
push = new Stack<Integer>();
pop = new Stack<Integer>();
}
public void push(int x) {
push.push(x);
}
public int pop() {
if(!pop.isEmpty()) return pop.pop();
else{
transform();
}
return pop.pop();
}
public int peek() {
if(!pop.isEmpty()) return pop.peek();
else{
transform();
}
return pop.peek();
}
public boolean empty() {
if(pop.isEmpty() && push.isEmpty()) return true;
else return false;
}
public void transform(){
while(!push.isEmpty()){
pop.push(push.pop());
}
}
}
|