- [每日一题]232.implement queue using
- [每日一题]232.implement queue using
- 232. Implement Queue using Stack
- 225. Implement Stack using Queue
- Leetcode 232. Implement Queue us
- 232. Implement Queue using Stack
- 225. Implement Stack using Queue
- 232. Implement Queue using Stack
- 225. Implement Stack using Queue
- 232. Implement Queue using Stack
1.这是一道使用堆栈去模拟队列的题目,感觉挺难想的。
反正我是没想到。
栈:先进后出。
队列:先进先出。
链接:https://leetcode.com/problems/implement-queue-using-stacks/
我们使用list模拟stack(先进后出),append 入栈,pop出栈
这里,采用两个堆栈实现这个队列。一个用于存数据input,一个用于取数据output。
(每次从input取到output的时候,其实就是把堆栈的数据进行了一次反转。)
1.每次append的时候,就直接存进input中。
2.每次pop或者peek的时候,就先看看output中有数据没,有的话就直接返回,没得话就从input中先读入数据,然后再从output中读
大致过程就是这样:
![](https://img.haomeiwen.com/i16471878/0089b9e778fe9fd9.png)
2.题解:
# 使用两个stack,一个正常放入输入值,一个在输出时候使用.
class MyQueue(object):
def __init__(self):
self.input_stack = []
self.output_stack = []
def push(self, x):
self.input_stack.append(x)
def pop(self):
if len(self.output_stack) == 0:
for i in range(len(self.input_stack)):
self.output_stack.append(self.input_stack.pop())
return self.output_stack.pop()
def peek(self):
if len(self.output_stack) == 0:
for i in range(len(self.input_stack)):
self.output_stack.append(self.input_stack.pop())
return self.output_stack[-1]
def empty(self):
if len(self.input_stack) == 0 and\
len(self.output_stack) == 0:
return True
else:
return False
网友评论