题目链接:
https://leetcode-cn.com/problems/zhan-de-ya-ru-dan-chu-xu-lie-lcof/
题意:
给出入栈顺序以及出栈顺序,问有没有可能是这种出栈顺序?
题解:
模拟栈的入栈出栈操作。
出栈顺序与入栈顺序都从第一个元素开始遍历
- 若是未进栈元素与当前出栈元素相同,则继续向下匹配;
- 若是未进栈元素与当前出栈元素不相同,则判断栈顶元素与当前出栈元素是否相同:
- 若相同则出栈且继续向下匹配
- 若不同则表示此种出栈顺序不合理。
代码:
class Solution:
def validateStackSequences(self, pushed: List[int], popped: List[int]) -> bool:
if len(pushed) != len(popped):
return False
i,j= 0,0
stack =[]
while j<len(popped):
if i<len(pushed) and pushed[i] == popped[j]:
i,j=i+1,j+1
elif len(stack)>0 and stack[len(stack)-1] == popped[j]:
j+=1
stack.pop(-1)
else :
if i<len(pushed):
stack.append(pushed[i])
i+=1
if i>=len(pushed):
break
return True if j ==len(popped) else False