Implement Stack using Queues 两个队列实现一个栈
来源:互联网 发布:java中string转map 编辑:程序博客网 时间:2024/06/11 05:15
Implement Stack using Queues
Implement the following operations of a stack using queues.
- push(x) -- Push element x onto stack.
- pop() -- Removes the element on top of the stack.
- top() -- Get the top element.
- empty() -- Return whether the stack is empty.
- You must use only standard operations of a queue -- which means only
push to back
,peek/pop from front
,size
, andis empty
operations are valid. - Depending on your language, queue may not be supported natively. You may simulate a queue by using a list or deque (double-ended queue), as long as you use only standard operations of a queue.
- You may assume that all operations are valid (for example, no pop or top operations will be called on an empty stack).
Update (2015-06-11):
The class name of the Java function had been updated to MyStack instead of Stack.
Credits:
Special thanks to @jianchao.li.fighter for adding this problem and all test cases.
class Stack {public://以前是两个栈实现一个队列,现在是队列实现栈//两个队列q1,q2//入栈:q1/q2空,入q1;q1不为空,入q1;q2不为空,入q2;//出栈:转换到另一个队列,留下最后一个元素,用于出栈 // Push element x onto stack. void push(int x) { if(q1.empty() && q2.empty()) q1.push(x); else if(!q1.empty()) q1.push(x); else if(!q2.empty()) q2.push(x); } // Removes the element on top of the stack. void pop() { //不用考虑合法性 if(!q1.empty()) { while(q1.size()>1) { int tmp=q1.front(); q2.push(tmp); q1.pop(); } q1.pop();//最后个元素弹出 } else{ while(q2.size()>1) { int tmp=q2.front(); q1.push(tmp); q2.pop(); } q2.pop();//最后个元素弹出 } } // Get the top element. int top() { //不用考虑合法性 if(!q1.empty()) { while(q1.size()>1) { int tmp=q1.front(); q2.push(tmp); q1.pop(); } int t=q1.front();//最后个元素继续入栈 q2.push(t); q1.pop(); return t; } else{ while(q2.size()>1) { int tmp=q2.front(); q1.push(tmp); q2.pop(); } int t=q2.front();//最后个元素继续入栈 q1.push(t); q2.pop(); return t; } } // Return whether the stack is empty. bool empty() { return (q1.empty()&&q2.empty()); } queue<int> q1; queue<int> q2;};
0 0
- Implement Stack using Queues 两个队列实现一个栈
- 两个队列实现一个栈[leetcode]Implement Stack using Queues
- [LeetCode-225] Implement Stack using Queues(两个队列实现栈)
- 225. Implement Stack using Queues 用两个队列实现栈的基本操作。
- 栈-Implement Stack using Queues(用队列实现栈)
- Implement Stack using Queues 用队列实现栈
- 225.Implement Stack using Queues (用队列实现栈)
- Leetcode 225 Implement Stack using Queues 使用队列实现栈
- Implement Stack using Queues 用队列实现栈
- 225. Implement Stack using Queues (用队列实现栈)
- leetcode 225. Implement Stack using Queues 双队列实现栈
- LeetCode Implement Stack using Queues 栈&队列
- 225.leetcode Implement Stack using Queues(easy)[两个队列模拟栈]
- 225. Implement Stack using Queues (用队列模拟栈)
- LeetCode OJ 之 Implement Stack using Queues(使用队列实现栈)
- LeetCode 225 Implement Stack using Queues(用队列来实现栈)(*)
- LeetCode 225. Implement Stack using Queues(使用队列来实现栈)
- LeetCode 225 Implement Stack using Queues(利用队列实现栈)
- 积分图像的应用(二):非局部均值去噪(NL-means)
- cookies 存、取、删除实例
- redis key的过期机制
- View下Clip Subviews
- Erlang:服务器程序
- Implement Stack using Queues 两个队列实现一个栈
- [leetcode]53 Ugly Number
- 制作Javascript弹出窗口技巧九则
- js 格式化时间日期函数小结
- (&a+1)
- iOS时间戳与标准时间转换
- Codeforces Gym 100342H Hard Test 构造
- H-Index Total Accepted: 3191 Total Submissions: 14098
- Java Code review 一些原则的原因探讨