当前位置: 首页 > news >正文

01 用栈实现队列

232. 用栈实现队列

已解答

简单

相关标签

premium lock icon相关企业

请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(pushpoppeekempty):

实现 MyQueue 类:

  • void push(int x) 将元素 x 推到队列的末尾
  • int pop() 从队列的开头移除并返回元素
  • int peek() 返回队列开头的元素
  • boolean empty() 如果队列为空,返回 true ;否则,返回 false

说明:

  • 只能 使用标准的栈操作 —— 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的。
  • 你所使用的语言也许不支持栈。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。

示例 1:

输入:
["MyQueue", "push", "push", "peek", "pop", "empty"]
[[], [1], [2], [], [], []]
输出:
[null, null, null, 1, 1, false]解释:
MyQueue myQueue = new MyQueue();
myQueue.push(1); // queue is: [1]
myQueue.push(2); // queue is: [1, 2] (leftmost is front of the queue)
myQueue.peek(); // return 1
myQueue.pop(); // return 1, queue is [2]
myQueue.empty(); // return false

提示:

  • 1 <= x <= 9
  • 最多调用 100pushpoppeekempty
  • 假设所有操作都是有效的 (例如,一个空的队列不会调用 pop 或者 peek 操作)

进阶:

  • 你能否实现每个操作均摊时间复杂度为 O(1) 的队列?换句话说,执行 n 个操作的总时间复杂度为 O(n) ,即使其中一个操作可能花费较长时间。

class MyQueue {
public:stack<int> stIn;stack<int> stOut;MyQueue() {}//将元素 x 推到队列的末尾void push(int x) {stIn.push(x);        }//从队列的开头移除并返回元素int pop() {// 只有当stOut为空的时候,再从stIn里导入数据(导入stIn全部数据)因为这里模拟的是队列出队,stIn没法直接出队头,需要先转换到//stOut中然后再弹出顺序就正确了if(stOut.empty()){// 从stIn导入数据直到stIn为空while(!stIn.empty()){stOut.push(stIn.top());stIn.pop();}}int result = stOut.top();stOut.pop();return result;}//返回队列开头的元素int peek() {// 只有当stOut为空的时候,再从stIn里导入数据(导入stIn全部数据)因为这里模拟的是队列出队,stIn没法直接出队头,需要先转换到//stOut中然后再弹出顺序就正确了if(stOut.empty()){// 从stIn导入数据直到stIn为空while(!stIn.empty()){stOut.push(stIn.top());stIn.pop();}}int result = stOut.top();//和pop函数唯一区别就是没有弹出return result;        }如果队列为空,返回 true ;否则,返回 falsebool empty() {return stIn.empty() && stOut.empty();  //两个都空才是空,否则就是不空,只要任意一个栈里有东西,队列就不是空!}
};/*** Your MyQueue object will be instantiated and called as such:* MyQueue* obj = new MyQueue();* obj->push(x);* int param_2 = obj->pop();* int param_3 = obj->peek();* bool param_4 = obj->empty();*/
  • 详情如注释
http://www.jsqmd.com/news/733722/

相关文章:

  • 大气层系统完整指南:Switch自定义固件的终极解决方案
  • Moonlight-Switch:Nintendo Switch游戏串流技术方案与多平台兼容架构
  • taotoken 平台 python 调用 openai 兼容 api 的完整入门指南
  • 借助模型广场与官方折扣为新项目选择高性价比模型
  • 解锁旧Mac新生命:OpenCore Legacy Patcher完全指南
  • C++中string常用方法总结
  • 2026年扬州工厂短视频代运营案例分析 - 速递信息
  • 2026企业AI陪跑推荐:全程陪伴,落地见效 8 - 速递信息
  • 【Laravel AI Security Alert】:2026年Q1已爆发7起Prompt注入+模型越权调用事件,3步修复框架层RCE风险(附CVE-2026-XXXX PoC)
  • Laravel 12模型层AI增强成本封顶设计:3种可插拔式Token配额策略,让每个Eloquent操作自带预算守门员
  • 别再乱配CORS了!Flask-CORS从入门到生产环境安全配置实战(含Nginx反向代理)
  • 基于AI与现金流模拟的自托管个人财务预测机器人开发实践
  • CompressO:如何用这款免费开源工具将视频图片压缩90%以上
  • 为AI代码生成器Cursor配置ESLint与Prettier规则集,实现自动化代码规范检查与格式化
  • 2026连云港黄金回收市场深度解析与靠谱品牌推荐 - 速递信息
  • 【黑马点评日记】异步秒杀:异步线程和阻塞队列以及Lua脚本的相关流程分析
  • R语言偏见检测不可绕过的5个统计陷阱,第3个让OpenAI内部报告延迟发布117天
  • EpiCaR集成学习:动态修正认知不确定性的高效推理方法
  • 【Swoole × LLM 企业级落地白皮书】:3类高敏业务(智能工单、实时投顾、IoT边缘推理)的长连接架构选型决策树与SLA保障方案
  • 多模态模型小型化:挑战与优化策略
  • 2026真心问:重庆本地家教哪家靠谱? - 速递信息
  • 2026唯品会礼品卡回收平台TOP榜:鼎鼎收专业深耕15年,四项五星实力登顶 - 鼎鼎收礼品卡回收
  • 2026年必知!揭秘霞浦美食地道店铺,究竟藏着哪些好用秘诀? - GrowthUME
  • 从纸质到数字:用Audiveris让古老乐谱重获新生的魔法
  • C++11新特性大揭秘:优化性能与简化代码的利器
  • ncmdump终极指南:3分钟解锁网易云音乐加密文件的完整解决方案
  • 1G/2.5G Ethernet PCS/PMA or SGMII IP核(五)
  • packer详解
  • 复杂地带的“生命方舟”:哈尔滨立和气垫船如何破解泥石流与湿地救援困局
  • 如何用Jasminum插件让Zotero中文文献管理效率提升90%