[LeetCode] 232、用栈实现队列

发布时间:2026/9/13 19:20:17

[LeetCode] 232、用栈实现队列 题目描述使用栈实现队列的下列操作push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。参考代码核心思路用两次「后进先出」凑出「先进先出」栈的特性是后进先出队列的特性是先进先出两者顺序完全相反。一个栈只能反转一次顺序那用两个栈连续反转两次整体顺序就会恢复成原本的入队顺序从而模拟出队列的效果。两个栈的分工我们给两个栈分配固定职责避免来回倒腾元素输入栈inStack只负责接收新加入的元素所有 push 操作直接往这里塞。输出栈outStack只负责弹出和查看队头元素所有 pop / peek 都从这里取。核心规则只有当输出栈为空时才把输入栈里的所有元素一次性全部倒入输出栈。// 该题解有一些异常输入没处理可用“全局变量”的方式处理一下就好classMyQueue{public:/** Initialize your data structure here. */MyQueue(){}/** Push element x to the back of queue. */voidpush(intx){stack1.push(x);}/** Removes the element from in front of queue and returns that element. */intpop(){if(stack2.empty()){while(!stack1.empty()){stack2.push(stack1.top());stack1.pop();}}if(!stack2.empty()){intresstack2.top();stack2.pop();returnres;}return-1;}/** Get the front element. */intpeek(){if(stack2.empty()){while(!stack1.empty()){stack2.push(stack1.top());stack1.pop();}}if(!stack2.empty())returnstack2.top();return-1;}/** Returns whether the queue is empty. */boolempty(){if(stack1.empty()stack2.empty())returntrue;elsereturnfalse;}private:stackintstack1;// 进队列stackintstack2;// 出队列};/** * 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(); */补充用队列实现栈参考思路在非空的队列里面操作boolg_invalidInputfalse;classMyStack{public:/** Initialize your data structure here. */MyStack(){// nothing}/** Push element x onto stack. */voidpush(intx){if(!q1.empty())q1.push(x);elseq2.push(x);}/** Removes the element on top of the stack and returns that element. */intpop(){if(!q1.empty()){intnumq1.size();while(num!1){q2.push(q1.front());q1.pop();num--;}intresq1.front();q1.pop();returnres;}else{intnumq2.size();while(num!1){q1.push(q2.front());q2.pop();num--;}intresq2.front();q2.pop();returnres;}g_invalidInputtrue;return-1;}/** Get the top element. */inttop(){if(!q1.empty()){returnq1.back();}else{returnq2.back();}g_invalidInputtrue;return-1;}/** Returns whether the stack is empty. */boolempty(){if(q1.empty()q2.empty())returntrue;elsereturnfalse;}private:queueintq1,q2;};/** * Your MyStack object will be instantiated and called as such: * MyStack* obj new MyStack(); * obj-push(x); * int param_2 obj-pop(); * int param_3 obj-top(); * bool param_4 obj-empty(); */
延伸阅读

更多相关文章

2026/9/11 13:20:33

终极技能打包指南:如何自动化验证和打包Claude技能

终极技能打包指南:如何自动化验证和打包Claude技能 【免费下载链接】compound-engineering-plugin Official Compound Engineering plugin for Claude Code, Codex, Cursor, and more 项目地址: https://gitcode.com/GitHub_Trending/ev/compound-engineering-plu…

2026/9/13 19:18:01

AI科研绘图实战:从零基础到专业级论文配图

写论文最痛苦的事情,其实不是数据跑不出来,也不是文献读不完,而是图表怎么画都“差点意思”。我见过太多科研人,实验结果非常漂亮,结果配图一放上去,直接拉低整个论文的档次。早些年大家还在硬啃 Illustrat…

2026/9/13 19:18:01

CAMEL多智能体框架:3步跑通两个智能体的角色扮演协作

CAMEL多智能体框架:3步跑通两个智能体的角色扮演协作 【免费下载链接】camel 🐫 CAMEL: The first and the best multi-agent framework. Finding the Scaling Law of Agents. https://www.camel-ai.org 项目地址: https://gitcode.com/GitHub_Trendin…

2026/9/13 0:01:16

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/13 0:01:16

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/12 6:29:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/12 14:32:17

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/13 11:18:28

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码