Implement Stack using Queues
来源:互联网 发布:手办童萌会 淘宝 编辑:程序博客网 时间:2024/05/14 15:29
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.
- You must use only standard operations of a queue -- which means only
push to back
,peek/pop from front
,size
, andis 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).
Update (2015-06-11):
The class name of the Java function had been updated to MyStack instead of Stack.
Credits:
Special thanks to @jianchao.li.fighter for adding this problem and all test cases.
Have you met this question in a real interview?
题目大意:用队列,实现栈。如果你的语言不支持队列,也可以用列表来模仿实现。那就用ArrayList,一个就够了,用起来简单
代码如下:
class MyStack { List<Integer> stack = new ArrayList<>(); // Push element x onto stack. public void push(int x) { stack.add(x); } // Removes the element on top of the stack. public void pop() { if(!empty()){ stack.remove(stack.size()-1); } } // Get the top element. public int top() { if(!empty()){ return stack.get(stack.size()-1); } return -1; } // Return whether the stack is empty. public boolean empty() { return stack.size()==0; }}
参考博客:http://www.bubuko.com/infodetail-934509.html
也有像剑指offer上说的用两个队列来实现stack
代码如下:
记得区分queue用add,peek,poll,而stack用push,pop,peek
class MyStack { Queue<Integer> q1 = new ArrayDeque<>(); Queue<Integer> q2 = new ArrayDeque<>(); // Push element x onto stack. public void push(int x) { q1.add(x); } // Removes the element on top of the stack. public void pop() { if(!q1.isEmpty()){ while(q1.size()>1){ q2.add(q1.poll()); } q1.poll(); }else{ while(q2.size()>1){ q1.add(q2.poll()); } q2.poll(); } } // Get the top element. public int top() { if(!q1.isEmpty()){ while(q1.size()>1){ q2.add(q1.poll()); } int top = q1.peek(); q2.add(q1.poll()); return top; }else{ while(q2.size()>1){ q1.add(q2.poll()); } int top = q2.peek(); q1.add(q2.poll()); return top; } } // Return whether the stack is empty. public boolean empty() { return q1.isEmpty()&&q2.isEmpty(); }}
参考博客:http://www.cnblogs.com/easonliu/p/4568492.html
0 0
- Implement Stack using Queues
- Implement Stack using Queues
- Implement Stack using Queues
- Implement Stack using Queues
- Implement Stack using Queues
- Implement Stack using Queues
- Implement Stack using Queues
- Implement Stack using Queues
- Implement Stack using Queues
- Implement Stack using Queues
- Implement Stack using Queues
- Implement Stack using Queues
- Implement Stack using Queues
- Implement Stack using Queues
- Implement Stack using Queues
- Implement Stack using Queues
- Implement Stack using Queues
- Implement Stack using Queues
- Android学习笔记(2)--基本编译流程 & 添加定制产品
- 迪杰斯特拉算法2
- 关于如何在sql数据库里查询多次返回数据的做法
- android事件分发下
- android打开网页
- Implement Stack using Queues
- linux中安装easy_install(setuptools)
- C#操作Excel
- Java Classloader机制解析
- Spring框架包含的模块
- Hibernate延迟加载实现原理
- 深入浅出数据仓库中SQL性能优化之Hive篇
- 也谈下 .9.png (点9图)在android 中的使用
- 完全卸载VMware虚拟机简单介绍