// 1.定义两个栈
// 2.入队直接push
// 3.出队 第一个栈的元素从后往前push第二个栈 然后pop第二个栈 第二个栈在从后往前push第一个栈
export default class Queue {
private arr1:number[]=[]
private arr2:number[]=[]
// 时间复杂度 O(1)
// 空间复杂度 O(n)
public in(num:number):number{
return this.arr1.push(num)
}
// 时间复杂度 O(n)
// 空间复杂度 O(n)
public out():number|undefined{
if(this.arr1.length===0){
return
}
while(this.arr1.length){
this.arr2.push(this.arr1.pop()!)
}
let ele = this.arr2.pop()
while (this.arr2.length){
this.arr1.push(this.arr2.pop()!)
}
return ele
}
// 时间复杂度 O(1)
// 空间复杂度 O(n)
get length(){
return this.arr1.length
}
}
算法题-用两个栈实现队列
最新推荐文章于 2024-08-08 15:12:59 发布