class Solution:
def IsPopOrder(self , pushV: List[int], popV: List[int]) -> bool:
stack = []
for i in pushV:
stack.append(i)
while True:
if stack and popV:
if stack[-1] == popV[0]:
stack = stack[:-1]
popV = popV[1:]
else:
break
else:
break
if len(stack) == len(popV) == 0:
return True
else:
return False
简单易理解的python解法:
1.遍历pushV,将当前元素放入栈;
2.每次放入栈后开始检查:尽可能按照popV的当前顺序输出元素,如果有成功输出的序列,则将这些部分从popV中删除;
3.最终遍历pushV结束后,栈的总长和popV应该都为0,否则有无法弹出的元素。

京公网安备 11010502036488号