题目
题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
解题思路
- 在push的时候两个栈都存入;
- 在pop的时候,判断Out栈是否为空,如果不为空则将Out栈更新为In栈[1:];,记录In栈[0]为res;
- In栈也更新为Out栈,返回res;
# -*- coding:utf-8 -*-
class Solution:
def __init__(self):
self.stackIn = []
self.stackOut = []
def push(self, node):
# write code here
self.stackIn.append(node)
self.stackOut.append(node)
def pop(self):
# return xx
if len(self.stackOut)>0:
self.stackOut = []
res = self.stackIn[0]
for i in range(1, len(self.stackIn)):
self.stackOut.append(self.stackIn[i])
self.stackIn = []
for v in self.stackOut:
self.stackIn.append(v)
return res
简化了一下
# -*- coding:utf-8 -*-
class Solution:
def __init__(self):
self.stackIn = []
self.stackOut = []
def push(self, node):
# write code here
self.stackIn.append(node)
self.stackOut.append(node)
def pop(self):
# return xx
if len(self.stackOut)>0:
self.stackOut = []
res = self.stackIn[0]
self.stackOut = self.stackIn[1:]
self.stackIn = []
for v in self.stackOut:
self.stackIn.append(v)
return res