- 建立一个栈,模拟入栈出栈过程
- 因为可能是分段入栈,所以每次入栈一个元素后,将栈顶元素与出栈序列中的当前位置的元素(用pop_cur记录)进行对比,如果相等便出栈且更新pop_cur;然后循环进行比对出栈,直到栈顶元素与出栈序列中的当前位置的元素不等
- 最后判断栈是否为空即可
# -*- 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 == []