我在编程测试中看到过一个problem,它涉及确定2组n个不同的整数是否可以形成有效的推入和弹出堆栈序列。
这个解决方案对我很清楚-如果要弹出的下一个项目是项目X,则继续将“推”列表中的项目推入堆栈,直到找到项目X。然后,弹出X并以相同的方式继续。 如果序列有效,则堆栈末尾将为空,表示所有推入的值均已弹出。
我考虑过这一点,并认为没有规则说明堆栈必须始终具有不同的值。它使我考虑了如果价值观不必不同的话,我该如何解决这个问题。 我了解这可能涉及检查某种排列,这将大大增加运行时间。
我想最终尝试为该问题编写解决方案以进行实践-因此,如果有人可以向我指出有关此问题的任何已知资源,或者提供有关如何有效解决此问题的见解,我将不胜感激。谢谢!