阿雪的学习记录|手动快速判断出栈顺序是否合法的万能方法

做了好多次笔试题了每次遇到这个就一头雾水,今天静下心来捉摸了一下,用不编程的方法手动快速判断。

判断方法:在出栈的队列中,排在某元素x后面(右侧)的元素中,在入栈队列里在该元素x前面(左侧)的元素按照入栈顺序相反的顺序排列。

这句话比较绕但其实很好理解。

比如入栈顺序是ACDFE,出栈顺序是CDEAF,我们从第一个元素C开始判断,它后面的元素有DEAF,其中A在他入栈队列的前面,所以要求A按照逆序排,就一个元素所以符合,判断下一个元素D,后面的有EAF,其中A在他入栈队列前,同理符合,判断下一个元素E,后面的元素有AF,其中AF都在他入栈队列的前面,需要按照相反的顺序,也就是FA这样的顺序排列,然而没有,所以这个出栈顺序就不合法。

如果出栈顺序是CDEFA就合法了,可以试着按照上面的思路判断一下,这个出入栈的过程应该就是:

push A
push C
pop
push D
pop
push F
push E
pop
pop
pop

每天学一点点,就能少菜一点点,加油( •̀ ω •́ )y

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值