Leetcode Implement Stack using Queues
2015-07-13 17:21
417 查看
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).
注意栈是先进后出,队列是先进先出,需要定义两个队列,保证一个为空,一个保存元素,入栈的时候把元素x放到空队列中,然后把另一个队列中的元素出队列并放入到空队列中。
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).
注意栈是先进后出,队列是先进先出,需要定义两个队列,保证一个为空,一个保存元素,入栈的时候把元素x放到空队列中,然后把另一个队列中的元素出队列并放入到空队列中。
class Stack { public: queue<int> p,q; // Push element x onto stack. void push(int x) { if(p.empty()) { p.push(x); while(!q.empty()) { p.push(q.front()); q.pop(); } } else if(q.empty()) { q.push(x); while(!p.empty()) { q.push(p.front()); p.pop(); } } } // Removes the element on top of the stack. void pop() { if(!p.empty()) { p.pop(); } else q.pop(); } // Get the top element. int top() { if(!p.empty()) return p.front(); else return q.front(); } // Return whether the stack is empty. bool empty() { return q.empty()&&p.empty(); } };
相关文章推荐
- UEditor 第一次加载正常,第二次无法正常加载问题
- EasyUi Datagrid的基础使用
- Android开发UI之Navigation Drawer
- easyui常用控件及样式收藏
- C# GUID
- iOS实现UIImageView透明区域点击事件穿透
- UItableView性能优化
- 给iOS工程增加Daily Build
- easyUI 获取当前页数
- duilib进阶教程 -- 实现List排序
- 如何判断EasyUi中treegride的某一节点是不是叶子节点
- 深入理解Windows Phone 8.1 UI控件编程
- 将UIButton的SEL转成block
- ImportError: matplotlib requires dateutil
- layoutSubviews总结
- UI基础之—UIScrollView,UIPageControl
- UITableView相关知识点
- UI基础之-UIImage,UIImageView, UISegmentedControl,UISlider
- Win10 RTM最终正式版即将诞生:编译版本暂定为Build 10240(图)
- String、StringBuilder、StringBuffer