第一反应可能会想错,因为栈压入不是一次性全部压入,所以可以压一部分然后再出来几个,再压一部分
所以不能直接像下面这样
# -*- coding:utf-8-*-
classSolution:
def IsPopOrder(self, pushV, popV):
# write code here
stackout = []
whilepushV:
stackout.append(pushV.pop())
returnTrue ifstackout == popV elseFalse
要考虑到压栈入栈的逻辑顺序,有可能压一部分后,又出栈一个,然后再压进去,再出
# -*- coding:utf-8-*-
classSolution:
def IsPopOrder(self, pushV, popV):
# write code here
stack = [] #记录当前压栈进去得值
temp = 0#记录当前出栈得值
fori in range(len(pushV)):
stack.append(pushV[i])
while stack and stack[-1] == popV[temp]:
stack.pop()
temp += 1
returnstack == []