class MyQueue {
private Stack<Integer> stack;
private int size;
/**
* Initialize your data structure here.
*/
public MyQueue() {
stack = new Stack<Integer>();
}
/**
* Push element x to the back of queue.
*/
public void push(int x) {
stack.push(x);
size++;
}
/**
* Removes the element from in front of queue and returns that element.
*/
public int pop() {
Stack<Integer> returnStack = new Stack<Integer>();
for (int i = 0; i < size; i++) {
returnStack.push(stack.pop());
}
int returnVlaue = returnStack.pop();
size--;
for (int i = 0; i < size; i++) {
stack.push(returnStack.pop());
}
return returnVlaue;
}
/**
* Get the front element.
*/
public int peek() {
Stack<Integer> returnStack = new Stack<Integer>();
for (int i = 0; i < size; i++) {
returnStack.push(stack.pop());
}
int returnVlaue = returnStack.peek();
for (int i = 0; i < size; i++) {
stack.push(returnStack.pop());
}
return returnVlaue;
}
/**
* Returns whether the queue is empty.
*/
public boolean empty() {
return stack.empty();
}
}
思想也簡單就是兩個隊列遍歷來顛倒順序。