文章目录
题目
用栈实现队列 leetcode :232
总结
时间复杂度
平均下来每个方式是O(1)
代码
java
class MyQueue {
public Stack<Integer> in;
public Stack<Integer> out;
//初始化
public MyQueue() {
in = new Stack<>();
out = new Stack<>();
}
//倒数据
//从in栈 倒入 out栈
//out栈为空才能倒数据
//in栈有数据才能倒,且必须全部倒入out栈
private void inToOut(){
if(out.empty()){
while(!in.empty()){//不是空就一直倒
out.push(in.pop());//从in里弹出的数据进入out
}
}
}
//加入数据
public void push(int x){
in.push(x);
inToOut();//加入一个数据你看能不能倒数据,能就倒,不能就啥也不做
}
//弹出一个数
public int pop(){
inToOut();
return out.pop();
}
//不弹出,返回队列头部
public int peek(){
inToOut();
return out.peek();
}
//判空
public boolean empty(){
return in.isEmpty() && out.isEmpty();
}
}