阅读量:0
文章目录
题目
用栈实现队列 leetcode :232
总结
时间复杂度
平均下来每个方式是O(1)
代码
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(); } }