[LeetCode] 232. Implement Queue using Stacks
来源:互联网 发布:java字符流写文件 编辑:程序博客网 时间:2024/06/13 12:23
232. Implement Queue using Stacks (用两个栈实现一个队列)
- Implement Queue using Stacks 用两个栈实现一个队列
- 题目翻译
- 解题方法
- 代码
1. 题目翻译
使用两个栈完成一个队列的下列功能
- push(x) – 将x加入队尾。
- pop() – 移除队列头部的元素。
- peek() – 返回队列头部的元素。
- empty() – 如果队列为空返回true。
注意:
- 只能使用标准的栈操作–包括push,peek,pop,size和empty。
- 假设所有操作都是有效的(即不存在对空队列的pop和peek操作)。
2. 解题方法
假设我们将元素{1},{2},{3}按序加入队列中,我们可以先按序将这些元素加入栈s1中,这样是没问题的,因为加入栈和队列保持相同的顺序。
但是,当我们要移执行pop的时候,在栈中最先被移除的永远是最后加入的元素,而队列正好相反。所以需要使用两个栈让它们保持相同的顺序。我们需要将s1中的所有元素移入到栈s2中,这时s2中的元素顺序为{3},{2},{1}(1为栈顶),从s2中移出栈顶{1}就相当于移出队列头部。peek操作与pop操作是一样的只不过不用删除s2栈顶只是返回就可以(注意:每次完成后,s1和s2最多只能有一个栈中存在数据,所以当要pop和peek时如果s1非空,则要把s1中元素移动到s2中)。
对于push操作,我们需要在s1中操作,这样才能加入到队尾。同样,操作前需要判断s2如果是非空,需要将s2中的所有数据移动到s1中在进行操作。
3. 代码
//Runtime: 0msclass MyQueue {private: stack<int> s1; stack<int> s2;public: /** Initialize your data structure here. */ MyQueue() { } /** Push element x to the back of queue. */ void push(int x) { while(!s2.empty()){ s1.push(s2.top()); s2.pop(); } s1.push(x); } /** Removes the element from in front of queue and returns that element. */ int pop() { int front = 0; if(!s1.empty()){ while(!s1.empty()){ s2.push(s1.top()); s1.pop(); } if(!s2.empty()){ front = s2.top(); s2.pop(); } }else if(!s2.empty()){ front = s2.top(); s2.pop(); } return front; } /** Get the front element. */ int peek() { int front = 0; if(!s1.empty()){ while(!s1.empty()){ s2.push(s1.top()); s1.pop(); } if(!s2.empty()){ front = s2.top(); } }else if(!s2.empty()){ front = s2.top(); } return front; } /** Returns whether the queue is empty. */ bool empty() { return s1.empty()&&s2.empty(); }};
阅读全文
0 0
- [LeetCode]232.Implement Queue using Stacks
- 【leetcode】232. Implement Queue using Stacks
- <LeetCode OJ> 232. Implement Queue using Stacks
- 232. Implement Queue using Stacks LeetCode
- Leetcode: 232. Implement Queue using Stacks(JAVA)
- leetcode 232. Implement Queue using Stacks
- LeetCode *** 232. Implement Queue using Stacks
- 【leetcode】232. Implement Queue using Stacks
- LeetCode 232. Implement Queue using Stacks
- Leetcode题解 232. Implement Queue using Stacks
- #leetcode#232. Implement Queue using Stacks
- leetcode 232. Implement Queue using Stacks
- Leetcode 232. Implement Queue using Stacks
- leetcode 232. Implement Queue using Stacks
- LeetCode-232.Implement Queue using Stacks
- 【leetcode】232. Implement Queue using Stacks
- [leetcode] 232. Implement Queue using Stacks
- LeetCode - 232. Implement Queue using Stacks
- Ciclop开源3D扫描仪软件---Horus源码分析之src\horus\engine\calibration\platform_extrinsics.py
- Java抽象(方法,类)和Java的接口
- springboot---helloworld
- 将virtio集成slipstream到windows iso,winpe – 原生方法和利用0pe
- history.go(-1)和history.back()的区别和联系
- [LeetCode] 232. Implement Queue using Stacks
- mysql 基本操作 存储过程和函数详解 (第四章)
- vb.net 教程 8-3 数据库操作1
- ORA-28000: the account is locked 解决方法
- 引用类型和基本数据类型的传参问题
- bzoj2124 等差子序列 (树状数组 维护hash值)
- dubbo实战---lineNumber: 13;columnNumber: 82; cvc-elt.1: Cannot find the declaration of element 'beans'
- 概率论-最大似然估计
- HashSet添加对象去重