用两个栈来模拟队列,一个负责记录入栈顺序,另一个记录这个的反顺序,即队列的正常顺序...push插入input栈,O(1); pop和peek看output栈,当output为空的时候就将input内的所有数据导入过来即可....
class MyQueue {
// Push element x to the back of queue.
Stack<Integer> input=new Stack<Integer>();
Stack<Integer> output=new Stack<Integer>();
public void push(int x) {
input.push(x);
}
// Removes the element from in front of queue.
public void pop() {
if( output.size()==0 )
{
while( input.size()!=0 )
{
output.push( input.pop() );
}
}
output.pop();
}
// Get the front element.
public int peek() {
if( output.size()==0 )
{
while( input.size()!=0 )
{
output.push( input.pop() );
}
}
return output.peek();
}
// Return whether the queue is empty.
public boolean empty() {
return output.empty()&&input.empty();
}
}