- 新建一个中间栈,模拟栈的输入和输出,
- 首先从压入列表中取出第一个数与压出列表中第一个数相比较,如果相同,两个列表同时弹出
- 如果不同,这个数压入中间栈中,继续上面操作,直至压入栈没有数字。
- 此时判断中间栈中数字与压出栈的顺序是否反向相等,如果相等判断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]))