模拟栈操作判断出栈序列合法性:按序入栈,栈顶匹配则出栈,最终栈空则合法。
问题
自然数 1, 2, …, N 依次入栈,判断序列 C₁, C₂, …, Cₙ 是否为合法出栈序列。
人工判断法则
出栈序列中每个数字,在它后面的比它小的数字必须递减排列。
- 2431 合法(4 后面的 3, 1 递减)
- 4123 不合法(4 后面的 1, 2, 3 不递减)
算法思路
模拟栈操作:
- 按顺序将数据压入栈
- 若栈顶等于待判断序列首元素,则出栈
- 最终待判断序列为空则合法
Python 实现
| |
模拟栈操作判断出栈序列合法性:按序入栈,栈顶匹配则出栈,最终栈空则合法。
自然数 1, 2, …, N 依次入栈,判断序列 C₁, C₂, …, Cₙ 是否为合法出栈序列。
出栈序列中每个数字,在它后面的比它小的数字必须递减排列。
模拟栈操作:
| |
Comments