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

    示例 1:

    输入:
    [“CQueue”,”appendTail”,”deleteHead”,”deleteHead”]
    [[],[3],[],[]]
    输出:[null,null,3,-1]
    示例 2:

    输入:
    [“CQueue”,”deleteHead”,”appendTail”,”appendTail”,”deleteHead”,”deleteHead”]
    [[],[],[5],[2],[],[]]
    输出:[null,-1,null,null,5,2]
    提示:

    1 <= values <= 10000
    最多会对 appendTail、deleteHead 进行 10000 次调用


    1. class CQueue {
    2. Deque<Integer> stk1, stk2;
    3. public CQueue() {
    4. stk1 = new LinkedList<>();
    5. stk2 = new LinkedList<>();
    6. }
    7. public void appendTail(int value) {
    8. stk1.addLast(value);
    9. }
    10. public int deleteHead() {
    11. if (stk2.isEmpty()) {
    12. while (!stk1.isEmpty()) {
    13. stk2.addLast(stk1.pollLast());
    14. }
    15. }
    16. if (stk2.isEmpty()) return -1;
    17. return stk2.pollLast();
    18. }
    19. }
    20. /**
    21. * Your CQueue object will be instantiated and called as such:
    22. * CQueue obj = new CQueue();
    23. * obj.appendTail(value);
    24. * int param_2 = obj.deleteHead();
    25. */