1. 建立一个栈,模拟入栈出栈过程
  2. 因为可能是分段入栈,所以每次入栈一个元素后,将栈顶元素与出栈序列中的当前位置的元素(用pop_cur记录)进行对比,如果相等便出栈且更新pop_cur;然后循环进行比对出栈,直到栈顶元素与出栈序列中的当前位置的元素不等
  3. 最后判断栈是否为空即可
# -*- coding:utf-8 -*-
class Solution:
    def IsPopOrder(self, pushV, popV):
        # write code here
        stack = []
        pop_cur = 0
        for i in range(len(pushV)):
            stack.append(pushV[i])
            while stack and stack[-1] == popV[pop_cur]:
                stack.pop()
                pop_cur += 1
        return stack == []