一.题目:
给定栈的push序列和pop序列,判断两者是否匹配.
二.解题思路:
我们可以设计这个栈来验证.如果遍历完整个pop序列发现并不能排空栈,那说明其中有问题.
代码如下:
class Solution(object):
def validateStackSequences(self, pushed, popped):
"""
:type pushed: List[int]
:type popped: List[int]
:rtype: bool
"""
stack = []
N = len(pushed)
push_start = 0
for i in range(N):
if stack and popped[i] == stack[-1]:
stack.pop()
else:
while push_start < N and pushed[push_start] != popped[i]:
stack.append(pushed[push_start])
push_start += 1
push_start += 1
return not stack