如何测试弹出订单是否合法?

hiw*_*way 8 algorithm

给定两个唯一的数字序列:push order of stack并且pop order of stack,数字push order按升序排序,现在问pop order是合法的还是不合法的?

例如,push order是1 2 3 4 5,所以4 5 3 2 1是合法的弹出订单,因为我们可以像这样推送和弹出:

push 1, push 2, push 3, push 4, pop, push 5, pop, pop, pop, pop

所以pop顺序:4 5 3 2 1是合法的,4 3 5 1 2不是合法的pop顺序.

kee*_*lar 4

由于您的推送序列是按升序排列的,因此当您N在弹出队列中看到一个数字时,则 1) 下面N和 2) 尚未弹出的所有数字都必须按降序弹出。

例如,4 3 5 1 2 不是有效的顺序,因为当我们看到“4”弹出时,所有小于“4”但之前尚未弹出的数字必须按降序弹出。然而,先弹出“1”,然后弹出“2”违反了此属性。