用两个栈实现一个队列

用两个栈实现一个队列

题目:

用两个栈,实现一个队列

包括功能:添加队列、删除元素、队列长度

思路:

什么是队列

队列是先进先出。

简单的可以用数组、链表实现

复杂的队列服务,需要单独设计

栈我们用数组来实现

队列的添加 add

往 stack1 中push 元素

队列删除

将stack1 中的所有元素pop出来,push到stack2中

执行 stack2.pop() 将stack2中顶部元素出栈

最后将stack2中所有元素都pop出来,push到stack1中

代码实现:

/**

* @description 两个栈实现 一个队列

* @author ykk

*/

export class MyQueue {

private stack1: unknown[] = [];

private stack2: unknown[] =[];

/**

* 入队

*/

add(n:unknown){

this.stack1.push(n)

}

delete(){

// 将 stack1 所有元素移动到 stack2 中

while(this.stack1.length){

this.stack2.push(this.stack1.pop())

}

//删除stack2顶部元素,即队列的头部

const res = this.stack2.pop()

// 将 stack2 所有元素“还给”stack1

while(this.stack2.length){

this.stack1.push(this.stack2.pop())

}

// 返回删除的元素

return res || null

}

//队列长度

get length (): number{

return this.stack1.length

}

}

测试用例:

相关推荐

“屠苏”的意义和由来?看了之后恍然大悟
365速发国际平台坑人

“屠苏”的意义和由来?看了之后恍然大悟

📅 07-30 👁️ 9244
怀孕后HCG和孕酮正常值具体是多少?(含对照表)
365速发国际平台坑人

怀孕后HCG和孕酮正常值具体是多少?(含对照表)

📅 06-27 👁️ 8944
安兔兔查看手机参数全攻略:硬件配置与性能一目了然
365bet亚洲手机版

安兔兔查看手机参数全攻略:硬件配置与性能一目了然

📅 08-06 👁️ 4092