题目
用两个栈实现一个队列
队列和栈的特点
队列
先进先出, 有add, delete,length 属性
栈
后进先出, 有add, delete,length 属性
队列和栈都可以使用数组或者链表实现。
思路1 使用数组实现
- 创建两个栈 stack1,stack2,
- add 的时候 push 到 stack1
- 获取 length 返回stack1.length
- delete 要保证按照队列的特点,
- 先将stack1 中的元素,按顺序搬到stack2
- 从stack2 中出栈一个元素,并最终返回该元素
- 将stack2 中元素 按顺序搬到stack1
代码实现
class Myqueue {
private stack1: number[] = [];
private stack2: number[] = []
add (n:number) {
this.stack1.push(n)
}
delete():number | null {
while(this.stack1.length) {
const item = this.stack1.pop()
if (item != null) {
this.stack2.push(item)
}
}
let res = this.stack2.pop()
while(this.stack2.length) {
const item = this.stack2.pop()
if (item != null) {
this.stack1.push(item)
}
}
return res || null
}
get length(): number {
return this.stack1.length
}
}
2周刷完100道前端优质面试真题 mu课 视频及资料领取请关注:奋斗的刚子
也欢迎使用我的小程序