946.验证栈序列

/**
 * @param {number[]} pushed
 * @param {number[]} popped
 * @return {boolean}
 */
var validateStackSequences = function (pushed, popped) {
    // 定义一个栈,不断的往里面入栈元素,当遇到可以出栈的元素,先把该元素出栈,再继续其他元素入栈
    const stack = []
    while (pushed.length) {
        // 先入栈
        stack.push(pushed.shift())

        // 每次获取栈顶元素,与popped相比看是否符合出栈
        while (stack.length) {
            const top = stack[stack.length - 1]
            if (top === popped[0]) { // 符合出栈,先出栈
                stack.pop()
                popped.shift()
            } else { // 否则继续执行入栈操作
                break
            }
        }
    }

    return stack.length === 0
};