题解 | #用两个栈实现队列#

用两个栈实现队列

http://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6

思路
用stack1顺序存储入栈数据,用stack2逆向存储入栈数据,push()的时候将数据存入stack1,pop()的时候从stack2中弹出,stack2的数据的由来与条件是,当stack2为空时,遍历stack1,并且依次出栈,入stack2栈;当stack2不为空,那么就直接pop()出一个stack2中的数据。

结果
运行时间:13ms
占用内存:11176KB

代码

    public void push(int node) {
        stack1.push(node);
    }

    public int pop() {
        // 仅当stack2中为空时,进行数据转移
        if (stack2.isEmpty()){
            while (!stack1.isEmpty()){
                stack2.push(stack1.pop());
            }
        }

        // 再次判断stack2,如果仍然为空,那么就抛出异常
        if (stack2.isEmpty()){
            throw new RuntimeException("队列中无元素");
        }
        return stack2.pop();
    }
全部评论

相关推荐

3 收藏 评论
分享
牛客网
牛客企业服务