栈的话,还有优化空间。
来源:2-8 用两个栈实现一个队列
su1per
2022-03-13
在老师的基础上进行优化时间。
主要优化在于:不用每次再循环栈2,不再把数据回归到栈1
关键代码:
CQueue.prototype.deleteHead = function() {
//如果栈2有元素,说明上一波的前面几个 元素还没出完,继续出
if(this.stack2.length) return this.stack2.pop()
if(!this.stack1.length) return -1
// 栈2没了,这时候 开启 新一波 栈1推到栈2。
while(this.stack1.length) {
this.stack2.push(this.stack1.pop())
}
// 第二步返回栈2的pop
let res = this.stack2.pop() || -1
return res
};
写回答
1回答
-
非常好!也感谢反馈和分享~
022023-03-09
相似问题