Python程序检查给定的入栈出栈序列是否正确
假设我们有一个名为pushes的数字列表,以及另一个名为pops的数字列表,我们需要检查这是否是一个有效的栈推入和弹出操作序列。
因此,如果输入类似于pushes = [1, 2, 5, 7, 9] pops = [2, 1, 9, 7, 5],则输出将为True,因为我们可以先推入[1, 2],然后将它们都弹出。然后推入[5, 7, 9]并全部弹出。
为了解决这个问题,我们将遵循以下步骤:
- s := 一个新的栈
- i := 0
- 对于pushes中的每个元素ele,执行以下操作:
- 将ele推入s
- 当s的大小 > 0 且 pops[i] 与s的栈顶元素相同,执行以下操作:
- 从s中删除栈顶元素
- i := i + 1
- 当s的大小为0时返回true,否则返回false
让我们看看下面的实现以获得更好的理解:
示例
class Solution: def solve(self, pushes, pops): s = [] i = 0 for ele in pushes: s.append(ele) while len(s) > 0 and pops[i] == s[-1]: s.pop() i += 1 return len(s) == 0 ob = Solution() pushes = [1, 2, 5, 7, 9] pops = [2, 1, 9, 7, 5] print(ob.solve(pushes, pops))
输入
[1, 2, 5, 7, 9], [2, 1, 9, 7, 5]
输出
True
广告