在一个数组算法中实现 K 个堆栈

5 arrays stack linked-list

如何在数组中实现 K 个堆栈,并具有最佳存储使用率(堆栈应该是动态的)?

zmb*_*mbq 0

好吧,如果您只担心空间使用情况,而不关心堆栈操作可以占用O(N),则可以使用数组的前几个单元来管理堆栈:

Array[0]- 堆栈末尾 0

Array[1]- 堆栈1的末尾

...

Array[K-1]= 堆栈 K 的末尾

堆栈n开始于Array[n-1]并结束于Array[n] (exclusive - [Array[n-1], Array[n]) )If Array[n-1]==Array[n]堆栈是空的。第一个堆栈从 K 开始,所以首先Array[0]..Array[K-1] = K

压入栈时,只需将其下方栈中的所有元素移动,并分别调整指针即可。

它会给你带来你需要的内存限制。