用两个栈实现一个队列
题目:
- 用两个栈,实现一个队列
- 包括功能:添加队列、删除元素、队列长度
思路:
- 什么是队列
- 队列是先进先出。
- 简单的可以用数组、链表实现
- 复杂的队列服务,需要单独设计
- 栈我们用数组来实现
- 队列的添加 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 } }
测试用例:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!