[leetcode] 132.Implement Queue using Stacks
2015-07-08 13:57
316 查看
题目:
Implement the following operations of a queue using stacks.
push(x) – Push element x to the back of queue.
pop() – Removes the element from in front of queue.
peek() – Get the front element.
empty() – Return whether the queue is empty.
Notes:
You must use only standard operations of a stack – which means only push to top, peek/pop from top, size, and is empty operations are valid.
Depending on your language, stack may not be supported natively. You may simulate a stack by using a list or deque (double-ended queue), as long as you use only standard operations of a stack.
You may assume that all operations are valid (for example, no pop or peek operations will be called on an empty queue).
题意:
使用栈来实现队列。
思路:
使用两个栈,一个用来push数据,另一个的作用是查看队列的最先进入的数据以及pop出第一个数据。
两个栈记为s1,s2,入队列时存入s1中,出队列时或者查看第一个元素时,查看s2中是否有元素,没有的话从s1中将元素放入到s2中,由于元素进入s1是1,2..n,而进入s2时是n…2,1所以接下来出s2的顺序就是进入s1的顺序。
以上,代码如下:
Implement the following operations of a queue using stacks.
push(x) – Push element x to the back of queue.
pop() – Removes the element from in front of queue.
peek() – Get the front element.
empty() – Return whether the queue is empty.
Notes:
You must use only standard operations of a stack – which means only push to top, peek/pop from top, size, and is empty operations are valid.
Depending on your language, stack may not be supported natively. You may simulate a stack by using a list or deque (double-ended queue), as long as you use only standard operations of a stack.
You may assume that all operations are valid (for example, no pop or peek operations will be called on an empty queue).
题意:
使用栈来实现队列。
思路:
使用两个栈,一个用来push数据,另一个的作用是查看队列的最先进入的数据以及pop出第一个数据。
两个栈记为s1,s2,入队列时存入s1中,出队列时或者查看第一个元素时,查看s2中是否有元素,没有的话从s1中将元素放入到s2中,由于元素进入s1是1,2..n,而进入s2时是n…2,1所以接下来出s2的顺序就是进入s1的顺序。
以上,代码如下:
class Queue { public: // Push element x to the back of queue. void push(int x) { s1.push(x); } // Removes the element from in front of queue. void pop(void) { if(s2.empty()) { if(s1.empty())return; while(!s1.empty()) { s2.push(s1.top()); s1.pop(); } } s2.pop(); } // Get the front element. int peek(void) { if(s2.empty()) { if(s1.empty())return -1; while(!s1.empty()) { s2.push(s1.top()); s1.pop(); } } return s2.top(); } // Return whether the queue is empty. bool empty(void) { return(!(!s1.empty() || !s2.empty())); } private: stack<int> s1; stack<int> s2; };
相关文章推荐
- 开始刷leetcode day60: Unique Paths II
- [Win32SDK基本]开启UI系统风格
- 从客户端(textarea="<p>wewqe</p>")中检测到有潜在危险的 Request.QueryString 值。
- APUE(第十章)信号
- LA 2678 Subsequence
- Powerbuilder打开后就提示停止工作的处理方法
- UI 常用方法总结之--- UITableView
- leetcode:Implement Stack using Queues 与 Implement Queue using Stacks
- 自定义时间选择器
- JSP跳转中request共享问题
- Implement Stack using Queues
- Implement Stack using Queues
- NGUI之UICamera控制触摸,鼠标事件
- leetcode 225:Implement Stack using Queues
- UITableView
- Solving “Dynamic Web Module 3.0 requires Java 1.6 or newer” in Maven Projects
- STL - deque(双端队列)
- STL - deque(双端队列)
- WebRequest
- Android 中数据库查询方法 query() 中的参数