LeetCode Implement Stack using Queues
2015-06-12 17:47
323 查看
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
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 { private: queue<int> que[2]; int current; void transfer(queue<int>& que1, queue<int>& que2, int n) { for (int i=0; i<n; i++) { que2.push(que1.front()); que1.pop(); } } public: Stack() : current(0){} // Push element x onto stack. void push(int x) { que[current].push(x); } // Removes the element on top of the stack. void pop() { int nums = que[current].size(); if (nums == 0) { return; } transfer(que[current], que[1 - current], nums - 1); que[current].pop(); current = 1 - current; } // Get the top element. int top() { if (empty()) { return 0; } return que[current].back(); } // Return whether the stack is empty. bool empty() { return que[current].empty(); } };
也可以使用一个队列来完成,不过对于队列来说一个和两个没什么区别只是个头指针而已。
相关文章推荐
- IOS开发-UIView之动画效果的实现方法
- <pages validateRequest="false"/>在.net4.0中无效的问题
- 浅谈----RAII资源获得即初始化(Resource Acquisition Is Initialization)
- UILable文字不居中问题
- 解决UISearchDisplayController搜索结果滚动时,顶部透明的问题
- flexbuilder 4.6破解
- 设置searchDisplayController的searchResultsTableView的UITableViewStyle为grouped
- 【uiautomator】运行命令
- break,continue,return和exit的区别
- ym——Android酷炫实用的开源框架(UI框架)(终)
- angular js 避免UI闪烁
- GRE issue写作范文:竞争利弊问题
- UI基础—UITableView
- 一个静态UITabelView的解决方案----CTStaticTableView
- android Runnable建立线程,与UI、activity信息的传送
- [LeetCode] Longest Consecutive Sequence
- UIView全部API的学习。
- Administrator privileges required for OLE Remote Procedure Call debugging: this feature will not wo
- easyui的datagrid动态列
- Android Phone Pad UI设计主流分辨率