判断不可能的出栈序列

对于在出栈序列中任意元素,其之后值小于该元素的元素必须是降序排列,否则序列不可能。
原因剖析如下:
1.所有元素都是从小到大顺序进栈, 所以栈顶元素一定比栈中的其他元素(如果有的话)大; 
2.根据"后进先出"的原则, 在出栈序列中, 曾经同一时刻存在于栈的元素, 值最大的栈顶元素会排在其他元素的前面; 
3.栈中的每一个元素都有机会成为栈顶元素; 
综合以上三点, 就是一个类似于降序的选择排序过程(每次都挑选最大的元素放在最前面), 使得 曾经同一时刻存在于栈的元素按照降序排列, 即每一个元素后值比该元素小的元素都呈降序排列 )
另注:  对于任一个元素后面的值比该元素的元素, 它们既可以是升序(进栈后立即出栈), 也可以是降序(进栈后都等待比它更大的元素进栈) , 因此不能作为判断依据.

栈序列
出栈序列 ( 输出序列 )
栈顶
栈底
1
 
 
1
2
1
32
1
432
1
5432
1
432
15
32
154
2
1543
 
15432
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值