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