用两个栈来模拟队列,一个负责记录入栈顺序,另一个记录这个的反顺序,即队列的正常顺序...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();
}
}
本文详细介绍了如何利用两个栈来模拟队列的功能,包括如何进行元素的压栈(push)、弹栈(pop)和查看栈顶元素(peek),以及如何判断队列是否为空。通过这种方式,可以有效地利用栈的特性来实现队列的常用操作。
310

被折叠的 条评论
为什么被折叠?



