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

2020-11-23  本文已影响0人  BitterOutsider

问题描述

用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )

解题思路

class CQueue {
    private Stack<Integer> stackHead;
    private Stack<Integer> stackTail;

    public CQueue() {
        stackHead = new Stack<>();
        stackTail = new Stack<>();
    }

    public void appendTail(int value) {
        stackTail.push(value);
    }

    public int deleteHead() {
        if (!stackHead.isEmpty()) {
            return stackHead.pop();
        }
        if (stackTail.isEmpty()) {
            return -1;
        }
        while (!stackTail.isEmpty()) {
            stackHead.push(stackTail.pop());
        }
        return stackHead.pop();
    }
}
上一篇 下一篇

猜你喜欢

热点阅读