lintcode-用栈实现队列-40
2015-09-17 09:11
253 查看
正如标题所述,你需要使用两个栈来实现队列的一些操作。
队列应支持push(element),pop() 和 top(),其中pop是弹出队列中的第一个(最前面的)元素。
pop和top方法都应该返回第一个元素的值。
样例
比如push(1), pop(), push(2), push(3), top(), pop(),你应该返回1,2和2
挑战
仅使用两个栈来实现它,不使用任何其他数据结构,push,pop 和 top的复杂度都应该是均摊O(1)的
队列应支持push(element),pop() 和 top(),其中pop是弹出队列中的第一个(最前面的)元素。
pop和top方法都应该返回第一个元素的值。
样例
比如push(1), pop(), push(2), push(3), top(), pop(),你应该返回1,2和2
挑战
仅使用两个栈来实现它,不使用任何其他数据结构,push,pop 和 top的复杂度都应该是均摊O(1)的
class Queue { public: stack<int> stack1; //进来的元素都放在里面 stack<int> stack2; //元素都从这里出去 void push(int element) { stack1.push(element); } int pop() { if(stack2.empty()){ //如果没有元素,就把负责放入元素的栈中元素全部放进来 while(!stack1.empty()){ stack2.push(stack1.top()); stack1.pop(); } } int ret=stack2.top(); //有元素后就可以弹出了 stack2.pop(); return ret; } int top() { if(stack2.empty()){ while(!stack1.empty()){ stack2.push(stack1.top()); stack1.pop(); } } return stack2.top(); } };
相关文章推荐
- Deep Learning(深度学习)学习笔记整理
- 计算机器内存数量+引入和显示ARDS成员
- linux下查看内存的命令
- 点击帮助按钮改变鼠标形状
- zoj1078
- 常用批处理内部命令使用详解
- 中文分词和TF-IDF
- Linux下开机自动运行程序设置
- CocoaPods的使用
- 百度2015 在线笔试题(1)
- mysql自动备份、恢复脚本(linux的shell、windows的批处理)
- 思考与总结【7】:关于编程的胡扯
- 百度2015 在线笔试题(1)
- 分布式应用的各基本领域及开发技术概要
- 疯狂ios讲义之日期选择器(UIDatePicker)
- PHP 9 大缓存技术总结
- 源码推荐(9.17):长按按钮可以移动自动排序,tableView多选 可存储文件
- Oracle 11g设置内存自动管理
- 题目:堆化
- Remove Duplicates from Sorted List