【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()の場合、実は一番上の要素をそのまま出しておけばいいのです.最初はこれでしばらく葛藤していました.
AC:113ms
Date
2016年05月8日
[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日