题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
解题思路
栈是LIFO的结构,队列是FIFO的结构,使用两个栈构建队列,则可以在push的时候,将元素存入第一个栈。当需要pop操作的时候,将第一个栈中的元素弹出并压入第二个栈,这时先前较早进入第一个栈的元素会来到第二个栈的栈顶,实现FIFO。
虽然只需要实现push和pop两个函数,但实现过程中是需要注意一些细节的,具体可以根据第二个栈的状态进行划分:
一、push:
直接压入第一个栈就行。
二、pop:
1、第二个栈为空:将第一个栈的所有元素依次弹出并压入第二个栈,最后弹出栈顶的元素;(当第一个栈也为空的时候,pop不出元素)
2、第二个栈非空:直接弹出栈顶元素。
Code
const outStack=[],
inStack=[];
function push(node)
{
// write code here
inStack.push(node);
}
function pop()
{
// write code here
if(!outStack.length){
while(inStack.length){
outStack.push(inStack.pop());
}
}
return outStack.pop();
}
运行环境:JavaScript (V8 6.0.0)
运行时间:12ms
占用内存:5352k