leetCode(44):Implement Stack using Queues 分类: leetCode 2015-07-19 19:29 50人阅读 评论(0) 收藏
2015-07-19 19:29
519 查看
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
and
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).
两个队列,永远有一个为空,插入时,插入到不为空的队列中,如果都为空则任意;弹出时,把不为空队列中的所有元素(最后一个除外)转移到另一队列当中,并将最后一个不插入,直接删除即可。如果两个队列均为空,则说明栈为空。
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 emptyoperations 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).
两个队列,永远有一个为空,插入时,插入到不为空的队列中,如果都为空则任意;弹出时,把不为空队列中的所有元素(最后一个除外)转移到另一队列当中,并将最后一个不插入,直接删除即可。如果两个队列均为空,则说明栈为空。
class Stack { public: // Push element x onto stack. void push(int x) {//在非空队列中插入 if (aqueue.empty()) bqueue.push(x); else aqueue.push(x); } // Removes the element on top of the stack. void pop() { if (aqueue.empty()) {//转移 while (bqueue.size() != 1) { int tmp = bqueue.front(); aqueue.push(tmp); bqueue.pop(); } bqueue.pop(); } else { while (aqueue.size() != 1) { int tmp = aqueue.front(); bqueue.push(tmp); aqueue.pop(); } aqueue.pop(); } } // Get the top element. int top() { int tmp; if (aqueue.empty()) { while (!bqueue.empty()) { tmp= bqueue.front(); aqueue.push(tmp); bqueue.pop(); } } else { while (!aqueue.empty()) { tmp = aqueue.front(); bqueue.push(tmp); aqueue.pop(); } } return tmp; } // Return whether the stack is empty. bool empty() { return (aqueue.empty() && bqueue.empty()); } private: queue<int> aqueue; queue<int> bqueue; };
相关文章推荐
- 【分块】 HDOJ 5286 wyh2000 and sequence
- java设计模式-Builder
- StringBuilder 以及 StringBuffer默认大小与扩容
- UVALive - 3263 That Nice Euler Circuit (几何)
- UICollectionView的学习
- [leetcode]Permutation Sequence
- 1051. Pop Sequence (25)
- codeforces 558D Guess Your Way Out! II
- 柯南君:看大数据时代下的IT架构(5)消息队列之RabbitMQ--案例(Work Queues起航)
- 柯南君:看大数据时代下的IT架构(5)消息队列之RabbitMQ--案例(Work Queues起航)
- 22-UICollectionView
- UVA - 1664 Conquer a New Region
- 21-UIScrollView 滑动视图
- 2.5 how do I iterate over a sequence in reverse order
- 20-02 UITableViewController
- PAT (Advanced Level) 1007. Maximum Subsequence Sum (25) 最大连续子数组,一次遍历,stack辅助
- 【Android UI设计与开发】第07期:底部菜单栏(二)Fragment的详细介绍和使用方法
- Hadoop 管理工具HUE配置-hdfs_clusters配置
- 第一讲 UIView及其子类
- 20-01 UITableView 表视图