1. 新建一个中间栈,模拟栈的输入和输出,
  2. 首先从压入列表中取出第一个数与压出列表中第一个数相比较,如果相同,两个列表同时弹出
  3. 如果不同,这个数压入中间栈中,继续上面操作,直至压入栈没有数字。
  4. 此时判断中间栈中数字与压出栈的顺序是否反向相等,如果相等判断TRUE,否则FALSE
class Solution:
    def IsPopOrder(self, pushV, popV):
        # write code here
        cur = 0
        assist = list()
        for i in range(len(pushV)):
            assist.append(pushV[i])
            while assist and assist[-1] == popV[cur]:
                assist.pop()
                cur += 1
        return assist == []


s = Solution()
print(s.IsPopOrder([1, 2, 3, 4, 5], [4, 5, 3, 2, 1]))