给定两个唯一的数字序列: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顺序.
由于您的推送序列是按升序排列的,因此当您N在弹出队列中看到一个数字时,则 1) 下面N和 2) 尚未弹出的所有数字都必须按降序弹出。
例如,4 3 5 1 2 不是有效的顺序,因为当我们看到“4”弹出时,所有小于“4”但之前尚未弹出的数字必须按降序弹出。然而,先弹出“1”,然后弹出“2”违反了此属性。