用两个栈来实现一个队列,分别完成在队列尾部插入整数(push)和在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。
- 首先得先要有两个栈 s1,s2
- 队列的特点是
先进先出
假设[1,2,3,4] 最后应该还是【1,2,3,4】
- 栈的特点是
先进后出
- 假设有[1,2,3,4],当它入栈S1
【
4
3
2
1
】
5. 把它出栈到s2
【
1
2
3
4
】
再出栈 【1,2,3,4】
ok 解决
var s1 = []
var s2 = []
function push(node)
{
// write code here
s1.push(node) //第一个栈只要做push的操作就可以拉
}
function pop()
{
// write code here
// s2 需要做的是先push 再pop
// 如果s2的长度为0,就到s1那边去看看,把S1 pop出来的值都push到s2中
if(s2.length == 0) {
while(s1.length != 0) {
s2.push(s1.pop())
}
}
// 最后把s2 pop出去就可以得到我们想要的值
return s2.pop();
}
module.exports = {
push : push,
pop : pop
};