225. Implement Stack using Queues
2016-07-28 15:12
369 查看
Title
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.
Notes:
You must use only standard operations of a queue – which means only push to back, peek/pop from front, size, and is 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).
solution
class Stack { public: // Push element x onto stack. void push(int x) { s1.push(x); } // Removes the element on top of the stack. void pop() { while(s1.size() > 1) { s2.push(s1.front()); s1.pop(); } if(s1.size() == 1) { s1.pop(); } while(!s2.empty()) { s1.push(s2.front()); s2.pop(); } } // Get the top element. int top() { while(s1.size() > 1) { s2.push(s1.front()); s1.pop(); } if(s1.size() == 1) { t = s1.front(); s2.push(s1.front()); s1.pop(); } while(!s2.empty()) { s1.push(s2.front()); s2.pop(); } return t; } // Return whether the stack is empty. bool empty() { return s1.empty(); } private: queue <int> s1, s2; int t; };
run time: 0ms
两个队列
相关文章推荐
- Mysql Error Code : 1436 Thread stack overrun
- 基于java中stack与heap的区别,java中的垃圾回收机制的相关介绍
- Python算法之栈(stack)的实现
- Stack数据结构的特点后进先出的应用:大数据运算
- C 堆栈,运行时类型挷定
- jstack和线程dump分析
- c语言stack实现--数据域与指针域分开
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- 深入Java虚拟机
- 搭建CloudStack
- 新手,正在学Java Collection,瞎写点东西-一个基于链表的stack及其遍历
- 转贴一份挺好的堆和栈区别的资料
- leetcode----Longest Substring Without Repeating Characters
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart