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.

Example:

MyStack stack = new MyStack();

stack.push(1);
stack.push(2);
stack.top(); // returns 2
stack.pop(); // returns 2
stack.empty(); // returns false

Notes:

  • You must use only standard operations of a queue -- which means only push to backpeek/pop from frontsize, 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).

利用如下图所示的方式, 每次push的时候将queue里面的值都放到x的后面即可.

Push: O(n), others : O(1)

Code

class MyStack(object):

    def __init__(self):
"""
Initialize your data structure here.
"""
self.q = collections.deque() def push(self, x):
"""
Push element x onto stack.
:type x: int
:rtype: void
"""
size = len(self.q)
self.q.append(x)
while size:
self.q.append(self.q.popleft())
size -= 1 def pop(self):
"""
Removes the element on top of the stack and returns that element.
:rtype: int
"""
return self.q.popleft() def top(self):
"""
Get the top element.
:rtype: int
"""
return self.q[0] def empty(self):
"""
Returns whether the stack is empty.
:rtype: bool
"""
return not self.q # Your MyStack object will be instantiated and called as such:
# obj = MyStack()
# obj.push(x)
# param_2 = obj.pop()
# param_3 = obj.top()
# param_4 = obj.empty()

最新文章

  1. k-折交叉验证(k-fold crossValidation)
  2. 高质量c/c++里的strcpy()
  3. HDU(3555),数位DP
  4. SQL内连接-外连接join,left join,right join,full join
  5. iOS通知NSNotificationCenter
  6. Codeforces Round #256 (Div. 2) B Suffix Structures
  7. 微信公众号java开发思路
  8. SpringEL 表达式错误记录
  9. python file文件操作--内置对象open
  10. java 23种设计模式教程
  11. 解决多个py模块调用同一个python的logging模块,打印日志冲突问题
  12. ARM指令集详解
  13. 【JMeter】【性能测试】服务器性能监控
  14. HTTP 权威指南 第二章 URL 与资源
  15. 2017-4-20/Redis的数据结构及应用场景
  16. jvm调优的分类
  17. 【刷题】BZOJ 4195 [Noi2015]程序自动分析
  18. 洛谷P3387 【模板】缩点 题解
  19. Java-DBCP连接池
  20. 基于SSH框架下登录验证码模块的实现

热门文章

  1. vue工具 - vue-cli安装使用流程
  2. 关于ASP.NET中Request.QueryString的乱码问题(转)
  3. MIME类型列表
  4. How to Verify Email Address
  5. LeetCode 31 Next Permutation(下一个全排列)
  6. 查看JVM使用的默认的垃圾收集器
  7. php-config
  8. Android 音视频同步(A/V Sync)
  9. Windows Server 2008 R2之五操作主控的管理
  10. eclipse快速向下复制行