搬运题解区牛客500979850号的动图。
在实现pop操作时,需要讨论pop时stack2的状态:如果stack2不为空,直接在stack2里面pop即可;如果stack2为空,则要先用stack2装完stack1的内容,再在stack2里面pop。
# -*- coding:utf-8 -*-
class Solution:
def __init__(self):
self.stack1 = []
self.stack2 = []
def push(self, node):
self.stack1.append(node)
def pop(self):
if self.stack2==[]:#stack2为空时,如果此时要执行pop操作:则要先用stack2装完stack1的内容,再在stack2里面pop。
#具体做法为,将stack1的所有内容依次出栈然后入栈到stack2中,再在stack2里面pop。
while self.stack1!=[]:
self.stack2.append(self.stack1.pop())
return self.stack2.pop()
else:#stack2不为空时,如果此时要执行pop操作:直接在stack2里面pop即可。
return self.stack2.pop()