225-用队列实现栈
ts
class MyStack {
queue1: number[]
// 备份
queue2: number[]
constructor() {
this.queue1 = []
this.queue2 = []
}
push(x: number): void {
this.queue1.push(x)
}
pop(): number {
if (!this.queue1.length) {
;[this.queue1, this.queue2] = [this.queue2, this.queue1]
}
while (this.queue1.length > 1) {
this.queue2.push(this.queue1.shift())
}
// 1. 队列 1 有数据,队列 1 清空,备份到队列 2
// 2. 队列 1 没有数据,两个队列交换后,弹出数据
return this.queue1.shift()
}
top(): number {
const x = this.pop()
this.queue1.push(x)
return x
}
empty(): boolean {
return !this.queue1.length && !this.queue2.length
}
}class MyStack {
queue1: number[]
// 备份
queue2: number[]
constructor() {
this.queue1 = []
this.queue2 = []
}
push(x: number): void {
this.queue1.push(x)
}
pop(): number {
if (!this.queue1.length) {
;[this.queue1, this.queue2] = [this.queue2, this.queue1]
}
while (this.queue1.length > 1) {
this.queue2.push(this.queue1.shift())
}
// 1. 队列 1 有数据,队列 1 清空,备份到队列 2
// 2. 队列 1 没有数据,两个队列交换后,弹出数据
return this.queue1.shift()
}
top(): number {
const x = this.pop()
this.queue1.push(x)
return x
}
empty(): boolean {
return !this.queue1.length && !this.queue2.length
}
}
Ayingotts's notes