题目描述:
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。
解题思路:
- 队列:先进先出
栈:先进后出
一个栈用来EnQueue:
- 每次进来元素都送入该栈
另外一个栈来转换顺序做DeQueue:
- 两个栈同时为空时候,return None
- 当第二个栈没有元素时,将第一个栈的元素全部Push进第二个栈,此时最顶端的元素即队首,直接Pop即可
- 当第二个栈有元素时候,直接Pop顶端元素
class Solution: def __init__(self): self.stack1 = [] self.stack2 = [] def Push(self, e): self.stack1.append(e) def Pop(self): if len(self.stack2) == 0 and len(self.stack1) == 0: print('Empty') return None elif len(self.stack2) == 0: while self.stack1: self.stack2.append(self.stack1.pop()) return self.stack2.pop() else: return self.stack2.pop()