2023-08-21  本文已影响0人  乔一波一

出栈合法性

解题思路:

模拟入栈出栈的过程,当入栈的元素等于当前出栈次序的元素时,停止入栈,弹出栈顶元素,和当前出栈次序的元素比较值。如果值相等,则继续模拟入栈出栈,否则表示当前出栈顺序是不合理的。

# ACM模式
while True:
    n = int(input())
    if n == 0:
        break
    sequence = list(map(int, input().split()))
    stack = []
    current = 1
    possible = True
    # 模拟当前序列的进栈顺序
    for num in sequence:
        # 遇到当前序列的出栈元素
        while current <= num:
            stack.append(current)
            current += 1
        # 当前进栈顺序是否能匹配出栈shun
        if stack[-1] == num:
            stack.pop()
        else:
            possible = False
            break
    if possible:
        print('Yes')
    else:
        print('No')
上一篇 下一篇

猜你喜欢

热点阅读