剑指 Offer 31. 栈的压入、弹出序列

115 阅读1分钟

剑指 Offer 31. 栈的压入、弹出序列

思路:用一个栈去模拟该输入栈的输入顺序,在每个元素入栈时,要从输出栈中取出输出一个元素,看当前的入栈元素是否适合出栈,如果是的则进一步判断,前一个入栈元素是否适合出栈,直到将所有的入栈元素都出栈了,进行下一步入栈操作。当所有的入栈元素入栈完成了,且跑了一遍出栈流程,此时只需要判断,入栈元素是否都出栈完成,于是直接看stack的长度即可。

const validateStackSequences = (pushed, popped) => {
    let stack= []
    var index = 0
    for(var i =0;i<pushed.length;i++){
        stack.push(pushed[i])
        while(popped[index] !== undefined && popped[index] === stack[stack.length - 1] ){
            stack.pop()
            index ++
        }
    }
    return !stack.length 
};