【发布时间】:2020-11-19 21:50:00
【问题描述】:
我在 HackerRank 上练习数据结构,我遇到了一个问题,说要使用两个堆栈实现一个队列,所以我查找它并理解了非常简单的逻辑 好像 : 使两个堆栈入队和出队 : 用于入队操作推送入队堆栈中的元素 :对于出队操作-首先检查出队堆栈是否为空,如果为空则从入队堆栈中弹出所有元素并将它们推入出队堆栈,以便入队完全反转,现在我们可以从出队堆栈中弹出顶部到执行出队操作(返回队列的最前面) :并且如果出队堆栈不为空,那么只需从队列前面的同一个 stcak 中弹出。 下面是一个 for 循环示例,它传输 Enqueue 堆栈的所有内容并使用 push 和 pop 操作将它们放入 Dequeue 堆栈,但 for 循环的行为很奇怪
let enqueueStack = [1,2,3,4,5,6]
let dequeueStack = [];
for(let i=0;i<enqueueStack.length;i++){
dequeueStack.push(enqueueStack.pop())
}
console.log(enqueueStack)
console.log(dequeueStack
下面是输出
[ 1, 2, 3 ]
[ 6, 5, 4 ]
我试过 forEach 也没有用
【问题讨论】:
-
提示:
enqueueStack.pop()使enqueueStack.length下降。
标签: javascript arrays for-loop foreach stack