搬运题解区牛客500979850号的动图。 alt

在实现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()