• [Leetcode]225. 用队列实现栈 、剑指 Offer 09. 用两个栈实现队列


    225. 用队列实现栈

    如题

    题解

    在push时候搞点事情:push时入队1,在把队2的元素一个个入队1,再交换队2和队1,保持队1除pushguocheng 始终为空。

    代码

    class MyStack {
        private Queue<Integer> q1;
        private Queue<Integer> q2;
    
        /** Initialize your data structure here. */
        public MyStack() {
            q1=new LinkedList<>();
            q2=new LinkedList<>();
        }
        
        /** Push element x onto stack. */
        public void push(int x) {
            q1.offer(x);
            while(!q2.isEmpty()){
                q1.offer(q2.poll());
            }
            Queue temp=q1;
            q1=q2;
            q2=temp;
        }
        
        /** Removes the element on top of the stack and returns that element. */
        public int pop() {
            return q2.poll();
        }
        
        /** Get the top element. */
        public int top() {
            return q2.peek();
        }
        
        /** Returns whether the stack is empty. */
        public boolean empty() {
            return q2.isEmpty();
        }
    }
    
    /**
     * Your MyStack object will be instantiated and called as such:
     * MyStack obj = new MyStack();
     * obj.push(x);
     * int param_2 = obj.pop();
     * int param_3 = obj.top();
     * boolean param_4 = obj.empty();
     */
    

    剑指 Offer 09. 用两个栈实现队列

    题解

    入队直接入栈1
    出队:若栈2有元素直接出栈,否则若栈1为空则返回-1,若不为空则全部入栈2并弹出栈顶元素。

    代码

    class CQueue {
    LinkedList s1,s2;
    public CQueue() {
    s1 = new LinkedList<>();
    s2 = new LinkedList<>();
    }

    public void appendTail(int value) {
        s1.add(value);
    }
    
    public int deleteHead() {
        if(!s2.isEmpty()){
            return s2.removeLast();
        }else if(s1.isEmpty()){
            return -1;
        }else{
            while(!s1.isEmpty()){
                int val=s1.removeLast();
                s2.add(val);
            }
            return s2.removeLast();
        }
    }
    

    }

    /**

    • Your CQueue object will be instantiated and called as such:
    • CQueue obj = new CQueue();
    • obj.appendTail(value);
    • int param_2 = obj.deleteHead();
      */
  • 相关阅读:
    Window 服务安装
    SQL
    vb To c# or c# To vb
    CacheHelper-缓存
    让Linq的OrderBy支持动态字段
    哪些列上适合建立索引???
    如何查看Oracle数据库中无效的对象,约束,触发器和索引
    如何查看Oracle中被锁定的表
    ORACLE ASM
    WebLogic Server
  • 原文地址:https://www.cnblogs.com/coding-gaga/p/13179935.html
Copyright © 2020-2023  润新知