946. 验证栈序列
给定 pushed 和 popped 两个序列,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true;否则,返回 false 。
1 | 示例 1: |
提示:
0 <= pushed.length == popped.length <= 1000
0 <= pushed[i], popped[i] < 1000
pushed 是 popped 的排列。
方法:模拟过程
直接模拟入栈和出栈的过程。
流程
遍历pushed元素
- 当前元素入栈
- while true(栈不空,且栈顶元素与popped[i]相同),则栈顶元素出栈,出栈元素数量+=1
- 如果栈为空,则为True;否则为False
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19class Solution:
def validateStackSequences(self, pushed, popped):
"""
:type pushed: List[int]
:type popped: List[int]
:rtype: bool
"""
if len(pushed)!=len(popped):
return False
stack,i=[],0
for n in pushed:
stack.append(n)
while stack and stack[-1]==popped[i]:
stack.pop()
i+=1
return not stack