# -*- coding:utf-8 -*-
class Solution:
# 思路:把两个栈当成两个瓶子,
# 入队就直接把元素放入第一个瓶子,
# 出队需要三步操作:
# 1:把第一个瓶子的元素倒入第二个瓶子,
# 2:把第二个瓶子瓶口的元素拿出来,这就是需要出队的元素,
# 3:拿出需要出队的元素以后,再把第二个瓶子里的元素倒回第一个瓶子。
# 这样就可以实现了类似队列的先进先出操作。
def __init__(self):
self.stack1 = []
self.stack2 = []
def push(self, node):
# 入队就直接把元素放入第一个瓶子。
self.stack1.append(node)
def pop(self):
# 1:把第一个瓶子的元素倒入第二个瓶子。
while self.stack1:
self.stack2.append(self.stack1[-1])
self.stack1.pop()
# 现在第二个瓶子的瓶口元素就是需要出队的元素,记录需要出队的元素。
element = self.stack2[-1]
# 2:出队。
self.stack2.pop()
# 3:拿出需要出队的元素以后,再把第二个瓶子里的元素倒回第一个瓶子。
while self.stack2:
self.stack1.append(self.stack2[-1])
self.stack2.pop()
return element