代码随想录第十天 | 232.用栈实现队列, 225. 用队列实现栈

第十天 今天开始学习stack相关

232. 用栈实现队列

class MyQueue {
    Stack<Integer> in;
    Stack<Integer> out;
    public MyQueue() {
        in = new Stack<>();
        out = new Stack<>();
    }
    
    public void push(int x) {
        in.push(x);
    }
    
    public int pop() {
        if(out.isEmpty()){
            while(!in.isEmpty()){
                out.push(in.pop());
            }
        }
        return out.pop();
    }
    
    public int peek() {
        if(out.isEmpty()){
            while(!in.isEmpty()){
                out.push(in.pop());
            }

        }
        return out.peek();
    }
    
    public boolean empty() {
        return in.isEmpty()&&out.isEmpty();
    }
}

/**
 * Your MyQueue object will be instantiated and called as such:
 * MyQueue obj = new MyQueue();
 * obj.push(x);
 * int param_2 = obj.pop();
 * int param_3 = obj.peek();
 * boolean param_4 = obj.empty();
 */

把一个stack里面的东西都从头都push到第二个stack里,这样顺序就保持先进先出了。

 225. 用队列实现栈

class MyStack {
    Queue<Integer> q1;
    Queue<Integer> q2;
    public MyStack() {
        q1 = new LinkedList<>();
        q2 = new LinkedList<>();
    }
    
    public void push(int x) {
        q1.offer(x);
    }
    
    public int pop() {
        
       
            while(q1.size()>1){
                q2.offer(q1.poll());
            }
            while(q2.size()>0){
                q1.offer(q2.poll());
            }
        
        
        
        return q1.poll();
    }
    
    public int top() {
        
            while(q1.size()>1){
                
                q2.offer(q1.poll());
                
            }
            int tempValue = q1.peek();
            q2.offer(q1.poll());
            
            Queue temp = q1;
            q1 = q2;
            q2 = temp;
            return tempValue;

        
  
        
    }
    
    public boolean empty() {
        return q1.isEmpty()&&q2.isEmpty();
    }
}

这道题和上道题不一样的地方是,Q2只是一个帮助排列元素顺序的容器,最终元素还需要返回到Q1。

对帮助理解队列和栈的概念很有帮助

posted @ 2022-10-21 11:24  小猫Soda  阅读(31)  评论(0)    收藏  举报