第一反应可能会想错,因为栈压入不是一次性全部压入,所以可以压一部分然后再出来几个,再压一部分

所以不能直接像下面这样
# -*- coding:utf-8-*-
classSolution:
    def IsPopOrder(self, pushV, popV):
        # write code here
        stackout = []
        whilepushV:
            stackout.append(pushV.pop())
        returnTrue ifstackout == popV elseFalse

要考虑到压栈入栈的逻辑顺序,有可能压一部分后,又出栈一个,然后再压进去,再出
# -*- coding:utf-8-*-
classSolution:
    def IsPopOrder(self, pushV, popV):
        # write code here
        stack = [] #记录当前压栈进去得值
        temp = 0#记录当前出栈得值
        fori in range(len(pushV)):
            stack.append(pushV[i])
            while stack and stack[-1] == popV[temp]:
                stack.pop()
                temp += 1
        returnstack == []