当前位置:网站首页>LeetCode 232、用栈实现队列
LeetCode 232、用栈实现队列
2022-04-23 20:23:00 【亡于灬】
232、用栈实现队列
1)题目描述
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push
、pop
、peek
、empty
):
实现 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
- 最多调用
100
次push
、pop
、peek
和empty
- 假设所有操作都是有效的 (例如,一个空的队列不会调用
pop
或者peek
操作)
2)分析
由于栈是先进后出,队列是先进先出,可以使用两个栈来实现顺序的调换。
3)C++
代码
class MyQueue {
public:
stack<int> s1;
stack<int> s2;
MyQueue() {
}
void push(int x) {
s1.push(x);
}
int pop() {
if(s2.empty()){
while(!s1.empty()){
s2.push(s1.top());
s1.pop();
}
}
int res=s2.top();
s2.pop();
return res;
}
int peek() {
if(s2.empty()){
while(!s1.empty()){
s2.push(s1.top());
s1.pop();
}
}
int res=s2.top();
return res;
}
bool empty() {
return s1.empty()&&s2.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(); */
版权声明
本文为[亡于灬]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_38342510/article/details/124360499
边栏推荐
- Servlet learning notes
- WordPress插件:WP-China-Yes解决国内访问官网慢的方法
- Es index (document name) fuzzy query method (database name fuzzy query method)
- Five minutes to show you what JWT is
- LeetCode动态规划训练营(1~5天)
- 上海回應“面粉官網是非法網站”:疏於運維被“黑”,警方已立案
- NC basic usage 4
- Operation of numpy array
- selenium.common.exceptions.WebDriverException: Message: ‘chromedriver‘ executable needs to be in PAT
- Some basic configurations in interlij idea
猜你喜欢
JDBC tool class jdbcfiledateutil uploads files and date format conversion, including the latest, simplest and easiest way to upload single files and multiple files
Don't bother tensorflow learning notes (10-12) -- Constructing a simple neural network and its visualization
How to protect ECs from hacker attacks?
Recommend an open source free drawing software draw IO exportable vector graph
PCL点云处理之计算两平面交线(五十一)
An error is reported when sqoop imports data from Mysql to HDFS: sqlexception in nextkeyvalue
Linux64Bit下安装MySQL5.6-不能修改root密码
Numpy Index & slice & iteration
WordPress插件:WP-China-Yes解决国内访问官网慢的方法
AQS learning
随机推荐
ArcGIS JS version military landmark drawing (dovetail arrow, pincer arrow, assembly area) fan and other custom graphics
[graph theory brush question-5] Li Kou 1971 Find out if there is a path in the graph
How do BIM swindlers cheat? (turn)
【PTA】L2-011 玩转二叉树
R语言ggplot2可视化:ggplot2可视化散点图并使用geom_mark_ellipse函数在数据簇或数据分组的数据点周围添加椭圆进行注释
2022DASCTF Apr X FATE 防疫挑战赛 CRYPTO easy_real
网络通信基础(局域网、广域网、IP地址、端口号、协议、封装、分用)
[talkative cloud native] load balancing - the passenger flow of small restaurants has increased
Sqoop imports tinyint type fields to boolean type
Shanghai a répondu que « le site officiel de la farine est illégal »: l'exploitation et l'entretien négligents ont été « noirs » et la police a déposé une plainte
Intersection calculation of straight line and plane in PCL point cloud processing (53)
Monte Carlo py solves the area problem! (save pupils Series)
微信中金财富高端专区安全吗,证券如何开户呢
【栈和队列专题】—— 滑动窗口
Paper writing 19: the difference between conference papers and journal papers
Change the material of unity model as a whole
Browser - learning notes
SQL Server Connectors By Thread Pool | DTSQLServerTP plugin instructions
DTMF双音多频信号仿真演示系统
SQL Server Connectors By Thread Pool | DTSQLServerTP plugin instructions