# -*- 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