代码随想录第十天 | 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 @   小猫Soda  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示