【LeetCode】Implement Queue using Stacks解題レポート

2472 ワード

Implement Queue using Stacks解題レポート
[LeetCode]
https://leetcode.com/problems/implement-queue-using-stacks/
Total Accepted: 42648 Total Submissions: 125482 Difficulty: Easy
Question
Implement the following operations of a queue using stacks.
push(x) – Push element x to the back of queue. pop() – Removes the element from in front of queue. peek() – Get the front element. empty() – Return whether the queue is empty.
Ways
2つのスタックで1つのキューを実現します.うん.2つのスタックをよく考えて左右に反転すればいいです.
なお、Aスタックの要素順序とキューの要素順序は同じである.つまりpop()やpeek()の場合、実は一番上の要素をそのまま出しておけばいいのです.最初はこれでしばらく葛藤していました.
class MyQueue {
    Stack<Integer> stackA = new Stack<Integer>();
    Stack<Integer> stackB = new Stack<Integer>();

    // Push element x to the back of queue.
    public void push(int x) {
        if (stackA.isEmpty()) {
            stackA.push(x);
            System.out.println(stackA.toString());
            return;
        }
        while (!stackA.isEmpty()) {
            stackB.push(stackA.pop());
        }
        stackB.push(x);
        while (!stackB.isEmpty()) {
            stackA.push(stackB.pop());
        }
        System.out.println(stackA.toString());
    }

    // Removes the element from in front of queue.
    public void pop() {
        stackA.pop();
        System.out.println(stackA.toString());
    }

    // Get the front element.
    public int peek() {
        return stackA.peek();
    }

    // Return whether the queue is empty.
    public boolean empty() {
        return stackA.isEmpty();
    }
}

AC:113ms
Date
2016年05月8日