2020-04-08(225. 用队列实现栈*)

难度 简单
基本思路就是维护两个栈,具体操作的方法很多。可以在插入的时候就做反转,也可以取的时候再做反转。
执行用时 :0 ms, 在所有 Java 提交中击败了100.00%的用户
内存消耗 :37.3 MB, 在所有 Java 提交中击败了5.33%的用户

    /** Initialize your data structure here. */
    Queue<Integer> queueA;
    int n = 0;
    public MyStack() {
        queueA = new LinkedList<Integer>();
    }
    
    /** Push element x onto stack. */
    public void push(int x) {
        queueA.offer(x);
        n++;
    }
    
    /** Removes the element on top of the stack and returns that element. */
    public int pop() {
        int temp = -1;
        int i = 0;
        Queue<Integer> queueTemp = new LinkedList<Integer>();
        while(i < n-1 && !queueA.isEmpty()){
            queueTemp.offer(queueA.poll());
            i++;
        }
        temp = queueA.poll();
        queueA = queueTemp;
        n--;
        return temp;
    }
    
    /** Get the top element. */
    public int top() {
        int temp = -1;
        int i = 0;
        Queue<Integer> queueTemp = new LinkedList<Integer>();
        while(i < n && !queueA.isEmpty()){
            if(i == n-1){
                temp = queueA.peek();
            }
            queueTemp.offer(queueA.poll());
            i++;
        }
        queueA = queueTemp;
        return temp;
    }
    
    /** Returns whether the stack is empty. */
    public boolean empty() {
        return queueA.isEmpty();
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容