做了好多次笔试题了每次遇到这个就一头雾水,今天静下心来捉摸了一下,用不编程的方法手动快速判断。
判断方法:在出栈的队列中,排在某元素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