232.用栈实现队列
题目描述: 232.用栈实现队列 .
解法
class MyQueue(object):
def __init__(self):
self.stack_in = []
self.stack_out = []
def push(self, x):
self.stack_in.append(x)
def pop(self):
if self.empty():
return None
if not self.stack_out:
while self.stack_in:
self.stack_out.append(self.stack_in.pop())
return self.stack_out.pop()
def peek(self):
if not self.stack_out:
while self.stack_in:
self.stack_out.append(self.stack_in.pop())
return self.stack_out[-1]
def empty(self):
return not (self.stack_in or self.stack_out)
主要是使用两个栈来模拟队列的进出过程,一个输入栈用来存储,当需要输出的时候,如果输出栈不是空的,直接将输入栈的内容放到输出栈,这样就可以保证输出的顺序和输入的顺序是一样的。
225. 用队列实现栈
题目描述: 225. 用队列实现栈.
解法
class MyStack(object):
def __init__(self):
self.que = deque()
def push(self, x):
self.que.append(x)
def pop(self):
if not self.que:
return None
for i in range(len(self.que)-1):
self.que.append(self.que.popleft())
return self.que.popleft()
def top(self):
if not self.que:
return None
for i in range(len(self.que)-1):
self.que.append(self.que.popleft())
res = self.que.popleft()
self.que.append(res)
return res
def empty(self):
return not self.que
第一次接触到这个deque,看起来是双向队列,明天仔细研究下。