From 33667f50b032464bcc8026f5b50c5d291d8d1964 Mon Sep 17 00:00:00 2001 From: Keqi Huang Date: Fri, 26 Apr 2019 10:03:26 +0800 Subject: [PATCH] Update 0225._implement_stack_using_queues.md --- .../0225._implement_stack_using_queues.md | 156 ++++++++++++------ 1 file changed, 104 insertions(+), 52 deletions(-) diff --git a/docs/Leetcode_Solutions/Python/0225._implement_stack_using_queues.md b/docs/Leetcode_Solutions/Python/0225._implement_stack_using_queues.md index 10a1ac2..7cf154c 100644 --- a/docs/Leetcode_Solutions/Python/0225._implement_stack_using_queues.md +++ b/docs/Leetcode_Solutions/Python/0225._implement_stack_using_queues.md @@ -1,53 +1,105 @@ -###225. Implement Stack using Queues - -题目: - - - - -难度: - -Easy - - -又到了作弊神预言Python的强项 - - +# 225. Implement Stack using Queues + +**难度: Easy** + +## 刷题内容 + +> 原题连接 + +* https://leetcode.com/problems/implement-stack-using-queues/ + +> 内容描述 + ``` -class Stack(object): - def __init__(self): - """ - initialize your data structure here. - """ - self.lst = [] - - - def push(self, x): - """ - :type x: int - :rtype: nothing - """ - self.lst.append(x) - - - def pop(self): - """ - :rtype: nothing - """ - self.lst.remove(self.lst[-1]) - - - def top(self): - """ - :rtype: int - """ - return self.lst[-1] - - def empty(self): - """ - :rtype: bool - """ - return self.lst == [] - -``` - + +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, 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). +``` + +## 解题方案 + +> 思路 1 +******- 时间复杂度: Push O(N) + Pop O(1) ******- 空间复杂度: O(N)****** + + + +```python +class MyStack: + + def __init__(self): + """ + Initialize your data structure here. + """ + self.queue = collections.deque() + + def push(self, x: int) -> None: + """ + Push element x onto stack. + """ + self.queue.append(x) + for _ in range(len(self.queue) - 1): + self.queue.append(self.queue.popleft()) + + def pop(self) -> int: + """ + Removes the element on top of the stack and returns that element. + """ + return self.queue.popleft() + + def top(self) -> int: + """ + Get the top element. + """ + return self.queue[0] + + def empty(self) -> bool: + """ + Returns whether the stack is empty. + """ + return not len(self.queue) +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + -- GitLab