LeetCode(225) 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.
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).
分析
用队列实现栈。
用两个队列,其中一个队列用户存储当前元素,另一个辅助队列作为pop和top操作时的临时存储。并利用flag标志,表示存储当前所有元素的队列。
AC代码
class Stack {
public:
// Push element x onto stack.
void push(int x) {
que[flag].push(x);
}
// Removes the element on top of the stack.
void pop() {
while (que[flag].size() > 1)
{
que[1 - flag].push(que[flag].front());
que[flag].pop();
}//while
que[flag].pop();
flag = 1 - flag;
}
// Get the top element.
int top() {
while (que[flag].size() > 1)
{
que[1 - flag].push(que[flag].front());
que[flag].pop();
}//while
int ret = que[flag].front();
que[1 - flag].push(que[flag].front());
que[flag].pop();
flag = 1 - flag;
return ret;
}
// Return whether the stack is empty.
bool empty() {
return que[flag].empty();
}
private:
queue<int> que[2];
int flag = 0; //作为存储队列
};
最新文章
- 使用命令 gradle uploadArchives 的异常: Unable to initialize POM pom-default.xml: Failed to validate POM for project
- win8 系统安装node环境记录
- 使用Webview实现app启动引导页
- rabbitmq 学习足迹
- [小哥Allegro72讲速成视频]
- 点击显示div
- ycsb使用方法
- Linux各发行版本简介
- Flex4 自定义通用的ImageButton
- 【BZOJ】【2809】【APIO2012】派遣dispatching
- static和extern的区别
- .net软件工程师面试题(参考答案)
- IDEA 快捷键整理
- 加载loading的ajax写法
- 汉高澳大利亚sinox2014电影播放flash最好的办法是安装游戏windows文本firefox
- EF的DbSet属性的Where查询,注意事项
- multiset与set
- jmeter奇淫妙计之遍历sql多列结果集
- Java 错误: 找不到或无法加载主类,问题集合
- Fastjson 爆出远程代码执行高危漏洞,更新版本已修复