我在一个面试网站上遇到了这个问题。该问题要求在单个数组中有效地实现三个堆栈,以便在整个数组空间中没有剩余空间之前没有堆栈溢出。
对于在一个数组中实现两个堆栈,很明显:第一个堆栈从左到右增长,第二个堆栈从右到左增长;当stackTopIndex交叉时,它发出溢出信号。
提前感谢你富有洞察力的回答。
发布于 2010-06-17 17:12:09
假设所有的数组位置都应该用来存储值-我猜这取决于你对效率的定义。
如果使用双堆栈解决方案,将第三个堆栈放在中间的某个位置,并跟踪其底部和顶部,那么大多数操作将继续有效,只要发生冲突,代价就是代价高昂的移动操作(将第三个堆栈移动到剩余可用空间的位置,移动到空闲空间的中点)。
它肯定会很快地编码和理解。我们的效率目标是什么?
https://stackoverflow.com/questions/3060104
复制相似问题