天天看點

劍指Offer---JZ5 用兩個棧實作隊列

描述

用兩個棧來實作一個隊列,分别完成在隊列尾部插入整數(push)和在隊列頭部删除整數(pop)的功能。 隊列中的元素為int類型。保證操作合法,即保證pop操作時隊列内已有元素。

示例:

輸入: [“PSH1”,“PSH2”,“POP”,“POP”]

傳回: 1,2

解析: “PSH1”:代表将1插入隊列尾部

“PSH2”:代表将2插入隊列尾部

"POP“:代表删除一個元素,先進先出=>傳回1

"POP“:代表删除一個元素,先進先出=>傳回2

示例1

輸入: [“PSH1”,“PSH2”,“POP”,“POP”]

傳回值: 1,2

var inStack = [];
var outStack = [];

function push(node)
{
    // write code here
//    先進
    inStack.push(node);
}
function pop()
{
    // write code here
//     當outStack不為空時,直接出隊
    if(outStack.length){
        return outStack.pop();
    }else{
//         當outStack為空,且inStack不為空時,先将inStack頭部的數添加到outStack尾部,最後再彈出一個數
        while(inStack.length){
            outStack.push(inStack.pop());
        }
        return outStack.pop();
    }
}
module.exports = {
    push : push,
    pop : pop
};
           

繼續閱讀