** 232.用栈实现队列 **
leetcode链接:https://leetcode.cn/problems/implement-queue-using-stacks/
题目描述:请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:1.void push(int x) 将元素 x 推到队列的末尾。2.int pop() 从队列的开头移除并返回元素。3.int peek() 返回队列开头的元素。4.boolean empty() 如果队列为空,返回 true ;否则,返回 false
核心思路:考察栈和队列的操作。
点击查看代码
class MyQueue {
public:stack<int> stIn;stack<int> stOut;MyQueue() {}void push(int x) {stIn.push(x);//入栈,即入队列}int pop() {if(stOut.empty()){//stOut为空while(!stIn.empty()){//stIn不为空stOut.push(stIn.top());//将stIn的栈顶元素加入stOut中stIn.pop();//弹出stIn的栈顶元素}}int result = stOut.top();stOut.pop();return result;}int peek() {int res = this->pop();//this指向类中定义的pop函数,即现有的popstOut.push(res);return res;}bool empty() {return stIn.empty() && stOut.empty();}
};
点击查看代码
class MyStack {
public:queue<int> que1;queue<int> que2;//临时队列MyStack() {}void push(int x) {que1.push(x);}int pop() {int size = que1.size();size--;//最后一个元素不移除while(size--){que2.push(que1.front());//front函数仅读取修改元素,并不删除元素que1.pop();}int result = que1.front();que1.pop();que1 = que2;//将临时队列返回给que1,此时最后一位目标元素已被移除while(!que2.empty()){que2.pop();//如果que2不为空则将其中的元素清除}return result;}int top() {int size = que1.size();size--;//最后一个元素不移除while(size--){que2.push(que1.front());//front函数仅读取修改元素,并不删除元素que1.pop();}int result = que1.front();//存储目标元素que2.push(que1.front());que1.pop();que1 = que2;//将临时队列返回给que1,此时最后一位目标元素已被移除while(!que2.empty()){que2.pop();//如果que2不为空则将其中的元素清除}return result;}bool empty() {return que1.empty() && que2.empty();}
};
点击查看代码
class MyStack {
public:queue<int> que1;//定义单个列表来循环操作队列MyStack() {}void push(int x) {que1.push(x);}int pop() {int size = que1.size() - 1;while(size--){//循环将队列首的元素加入到队列尾,直到遍历到需要的队尾元素。que1.push(que1.front());que1.pop();}int result = que1.front();//存储目标元素后将该元素移除que1.pop();return result;}int top() {int size = que1.size() - 1;while(size--){que1.push(que1.front());que1.pop();}int result = que1.front();//存储目标元素后将该元素加入到队尾que1.push(que1.front());que1.pop();return result;}bool empty() {return que1.empty();}
};
点击查看代码
class Solution {
public:bool isValid(string s) {stack<char> st;if(s.size() % 2 !=0) return false;for(int i = 0;i < s.size();i++){if(s[i] == '(')st.push(')');//当读取到字符时,就将与之对应的反字符压入栈。else if(s[i] == '[')st.push(']');else if(s[i] == '{')st.push('}');//栈空时无法匹配到所需字符,返回false,当字符与栈顶元素不匹配时也返回falseelse if(st.empty() || s[i] != st.top())return false;//顺序不能反,栈空时调用top会报错(未定义)else{st.pop();}}return st.empty();}
};
点击查看代码
class Solution {
public:string removeDuplicates(string s) {stack<char> st;for(char c:s){if(st.empty() || c != st.top()){//这里c不是索引,而是元素st.push(c);}else st.pop();}string result = "";while(!st.empty()){result += st.top();st.pop();}reverse(result.begin(),result.end());//出栈的元素顺序是反的,因此要反转一下。return result;}
};
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/983632.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!相关文章
【编程技巧】do{..........}while(0)在嵌入式中的作用
View Post【编程技巧】do{..........}while(0)在嵌入式中的作用主要作用:
1、避免宏展开时的语法错误
// 有问题的宏定义
#define SWAP(a, b) \temp = a; \a = b; \b = temp;// 使用时
if (x > y)SWAP(x, y); // …
关于岐金兰“Ai元人文构想”理论体系的阐述
关于岐金兰“Ai元人文构想”理论体系的阐述
摘要:为破解AI价值对齐的深层困境,“AI元人文构想”提出了一种新范式:以一套名为“通用价值行为单元”的原生价值基础语言,作为人、社会、机器共同的理解与操作标准。基…
LAUNCH LTR-01 TPMS Tool: 315MHz/433MHz Dual Frequency Metal/Rubber for European/American Vehicles
The Critical Role of TPMS Sensors: A Safety Imperative for European & American Drivers
When it comes to vehicle safety, few systems are as vital as the Tire Pressure Monitoring System (TPMS). For E…
NOIP 2025 游:寄!
NOIP 2025Day -INF
发现自己码力已经归零了,写了动态 dp 和树套树,后者没调过
Update: 赛后依旧没调过
Day -1
今年改到育才了,所以只能坐火车去,这个月第二次去沈阳了。
饺子……嚼嚼嚼……好吃
路上写了一路的作…
USB-MPI/DP/PPI Programmer Cable for Siemens S7 PLCs – Essential for Automotive Repair Car Owners
The USB-MPI 6ES7 972-0CB20-0XA0: Your Key to Seamless Siemens PLC Programming for Automotive Systems
Why Automotive Repair Shops and Car Owners Need a Reliable PLC Programming Cable
In modern automotiv…
分布式理论与一致性协议(CAP/BASE/Raft)
本文内容基于个人对特定技术的理解和实践,或为对相关技术内容的整理与分享。请读者批判性阅读,如有疏漏或不准确之处,恳请斧正。
CAP
Consistency 一致性:要求每个节点的数据是强一致的,只能返回最新数据,或者无…
2025高碳素鱼竿哪家强?超轻超硬+新手友好款全解析
在垂钓运动中,鱼竿是连接人与鱼的关键纽带,其性能直接决定作钓体验与收获效率。随着渔具技术的迭代,兼具“超轻手感”与“超硬强度”的高碳素鱼竿,已成为2025年市场的主流选择,尤其受到新手钓友的青睐。
所谓“高…
28调高碳综合竿选购指南:一竿通杀四季水域的实用之选
对于钓鱼爱好者而言,一款趁手的鱼竿是提升垂钓体验的核心装备。春钓浅滩鲫鱼、夏守深潭大鱼、秋追近岸鱼群、冬钓静水寒鱼,不同季节与场景的垂钓需求往往让钓友陷入“多竿奔波”的困境。如今,一款集轻量、强韧、多场…
2025手竿选购指南:新手买钓鱼竿怎么选?品质之选推荐
如今,垂钓已成为越来越多人放松身心的休闲方式,不少新手也纷纷加入钓鱼大军。但面对市场上琳琅满目的钓鱼竿,新手往往会陷入“怎么选”的困惑——手竿的调性、长度、材质该如何匹配自身需求?什么样的产品既耐用又适…
2025世界十大顶级鱼竿品牌盘点:什么牌子值得入?
对钓鱼人而言,一根合适的鱼竿是收获快乐的关键。在2025年的渔具市场上,“鱼竿什么品牌好用”“鱼竿排名前十的品牌”“世界十大顶级鱼竿品牌”成为钓友搜索的高频词。这些长尾词的核心诉求,本质上是对“品质可靠、性…
工作感受月记(202512月)
一记记录到年底,已是十二月。
2025年12月1号
这周是我上的oncall班下午四点到12点,然后就是等待手机被叫上。在上午空闲时间,自己还是完成了华为AI的基础考试,背诵题库中的146道题,发现有近10道题不是题库中的内容…
【URP】Unity[内置Shader]地形光照TerrainLit
TerrainLit Shader是Unity URP(通用渲染管线)中专为地形系统设计的内置着色器,主要用于高效渲染大规模地形表面并支持多纹理混合。 作用与原理 核心功能: 支持最多8层纹理混合【从UnityURP开始探索游戏渲染】专…
2025年12月电缆生产厂家实力盘点,名单靠前的知名企业有哪些
在工业生产、基础设施建设及日常生活中,电缆作为能量传输与信号传递的核心载体,其质量与性能直接关系到各类系统的安全稳定运行。2025年,随着新能源、智能制造等领域的快速发展,电缆市场需求持续攀升,一批技术过硬…
第42天(中等题 数据结构)
打卡第四十二天
2道中等题题目:思路:枚举中间元素 j,然后快速找到它左边比它小的最小值,以及右边比它小的最小值。
代码:
class Solution {
public:int minimumSum(vector<int> &nums) {int n = nums.s…
2025中国电缆一线品牌权威推荐:十大标杆品牌名单推荐,12月新版更新
电缆作为电力传输与通信连接的核心载体,其品质直接关系到工程安全、能源效率与使用稳定性。在2025年的市场环境下,技术升级与品质升级成为行业主旋律,一批兼具实力与口碑的品牌脱颖而出。本文将结合市场表现与技术实…
2025行业一线品牌精选TOP榜单12月更新:变频、光伏、绝缘、工程项目电缆
2025年,国家电网投资突破6500亿元,5G基站建设增长30%,城市轨道交通线路将超15000公里,庞大的基建需求推动线缆行业迎来爆发式增长。变频、光伏、绝缘电缆及各类工程项目用线作为核心配套产品,其品质直接影响工程安…