记录刷题的过程。牛客和力扣中都有相关题目,这里以牛客的题目描述为主。该系列默认采用python语言。
1、问题描述:
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
2、所用数据结构:队列和栈
3、题解:
栈:先入后出
队列:先入先出
设计两个栈:删除acceptStack
栈中的数据,在outputStack
中添加这个数据,那么先在acceptStack
中删除的数据,就会进入到outputStack
的栈底,后在acceptStack
中删除的数据,会后进入outputStack
,那么它就会先出来。
class Solution:
def init(self):
#添加数据栈
self.acceptStack=[]
#删除数据栈
self.outputStack = []
def push(self, node):
#向添加数据的栈中添加数据
self.acceptStack.append(node)
def pop(self):
#判断删除数据的栈中是否有数据,没有的话,就添加数据,添加数据时,要添加栈1 中删除的数据
if not self.outputStack:
while self.acceptStack:
self.outputStack.append(self.acceptStack.pop())
#如果有数据的话,就返回
if self.outputStack:
return self.outputStack.pop()
#如果没有数据,说明没有数据添加进去,也就不需要删除数据,所以返回none
else:
return None