題目描述:
- 用兩個棧來實現一個隊列,完成隊列的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()