192. 【应-43-1·简】出栈序列合法性

简单 Python 2s 256MB
通过 0/0

📋 题目描述
给定 N 个不同整数依次入栈的顺序(入栈序列),再给定一个候选的出栈序列。判断该出栈序列是否能通过合法的"入栈/出栈"操作得到。 提示:用一个辅助栈模拟。按入栈序列依次把元素压入栈,每次压入后,只要栈顶等于候选出栈序列当前位,就弹出并把指针后移。走完入栈序列后,若栈空且出栈序列已全部匹配,则合法。
📥 输入描述
第一行一个整数 N(1<=N<=1000)。 第二行 N 个不同整数,表示入栈序列(空格分隔)。 第三行 N 个整数,表示候选出栈序列(空格分隔)。
📤 输出描述
合法输出 `YES`,否则输出 `NO`。
输入样例
5
1
2
3
4
5
3
2
5
4
1
输出样例
YES
提示:经典栈模拟:辅助栈 stack、出栈序列指针 j。 对每个入栈元素 x:stack.append(x);while stack and stack[-1]==pop_seq[j]: stack.pop(); j+=1。 最后判断 stack 是否为空(且 j 是否走到末尾)。

登录后提交代码

讨论区 0
登录后参与讨论

还没有讨论,来发表第一条吧!