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