题目浅析

  • 想查看原题可以点击题目链接

  • 简单地说,就是给两个序列,分别是往栈 push 内容的顺序,另一个是可能的从栈 pop 的顺序,需要验证这个 pop 的顺序是否合理(可能存在)。

思路分享

代码解答(强烈建议自行解答后再看)

  • 参考题解
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution:
def validateStackSequences(self, pushed: List[int], popped: List[int]) -> bool:
stack = [0] * len(pushed)
i_stack, i_push, i_pop = 0, 0, 0
for x in enumerate(pushed):
stack[i_stack] = pushed[i_push]
# print("i_stack: " + str(i_stack) + " push")
while i_stack >= 0 and stack[i_stack]==popped[i_pop]:
# print("pop")
i_stack -= 1
i_pop += 1
i_stack += 1
i_push += 1

return i_pop == len(popped)