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