用于检查给定的推送弹出序列是否正确的程序
假设我们有一个称为push的数字列表,另一个名为pops的数字列表,我们必须检查这是否是堆栈push和pop动作的有效序列。
因此,如果输入像pushs=[1、2、5、7、9]pops=[2、1、9、7、5],则输出将为True,因为我们可以按[1、2]首先将它们都弹出。然后按[5、7、9]并全部弹出。
为了解决这个问题,我们将遵循以下步骤-
s:=一个新堆栈
i:=0
对于推入中的每个元素,执行
从s中删除top元素
我:=我+1
将ele推入s
s的大小>0并且pops[i]是s的相同顶部元素,但是
当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