在 JavaScript 中验证 push pop 序列
问题
JavaScript函数接受两个数组,pushed和popped,作为第一个和第二个参数。这两个数组都保证由唯一元素组成。
当且仅当这可能是对最初为空的堆栈的一系列push和pop操作的结果时,我们的函数应该返回true,否则返回false。
例如,如果函数的输入是-
const pushed = [1, 2, 3, 4, 5]; const popped = [4, 5, 3, 2, 1];
那么输出应该是-
const output = true;
输出说明
我们可能会执行以下顺序-
push(1), push(2), push(3), push(4), pop() -> 4, push(5), pop() -> 5, pop() -> 3, pop() -> 2, pop() -> 1
示例
此代码将是-
const pushed = [1, 2, 3, 4, 5];
const popped = [4, 5, 3, 2, 1];
const validateSequence = (pushed = [], popped = []) => {
let pushedIndex = 0
let poppedIndex = 0
const stack = []
while (pushedIndex < pushed.length) {
if (stack[stack.length - 1] !== popped[poppedIndex]) {
stack.push(pushed[pushedIndex++])
} else {
stack.pop()
poppedIndex += 1
}
}
while (stack.length) {
if (stack.pop() !== popped[poppedIndex++]) {
return false
}
}
return true;
};
console.log(validateSequence(pushed, popped));输出结果控制台中的输出将是-
true
热门推荐
1 泰迪狗狗如何训练
3 狗狗训练图
5 狗狗训练方法
6 训练狗狗不咬人
8 敏捷训练狗狗
10 训练狗狗吃饭
11 泰迪狗狗训练
12 狗狗从多大开始训练
13 狗狗训练学校费用
14 怎么去训练狗狗
15 狗狗训练狗狗
16 狗狗训练教程
17 训练狗狗装死
18 泰迪狗狗的训练方法