面试题22:栈的压入、弹出序列
栈的压入、弹出序列
class Solution:
def IsPopOrder(self, pushV, popV):
if not pushV or not popV:
return False
stack = [pushV[0]]
pushV.pop(0)
while popV:
b_p = popV[0]
if pushV and b_p not in stack:
while stack[-1] != b_p:
stack.append(pushV[0])
pushV.pop(0)
popV.pop(0)
stack.pop()
continue
else:
if stack[-1] == b_p:
while stack and stack[-1] == b_p:
stack.pop()
popV.pop(0)
continue
else:
break
return False if popV else True
class Solution:
def IsPopOrder(self, pushV, popV):
stack = []
j = 0
for x in pushV:
stack.append(x)
while j < len(popV) and popV[j] == stack[-1]:
stack.pop()
j += 1
return False if stack else True
关注公众号:数据结构与算法那些事儿,每天一篇数据结构与算法