栈和队列最常考的面试题之一: 一个数组实现两个栈
这道题总共有3种解题方法:
1)栈顶指针从两边向中间生长
两个栈顶指针指向数组的两边,让指针分别从两边向中间生长。
若两个栈顶指针走到相同的位置,则需要扩容,以保栈的正常操作。
2)栈顶指针从中间向两边生长
两个栈的栈顶指针指向数组的中间,让指针分别从中间向两边生长。
若其中一个栈顶指针走到了数组的一端,不管另一个栈顶指针是否走到了数组的另一端,都需要扩容,以保栈的正常操作。
缺陷:浪费空间,空间的利用率降低。
3)栈顶指针分别走数组的奇偶下标
两个栈的栈顶指针指向数组的开始,让指针分别走数组的奇偶下标。
若其中一个栈顶指针走到了数组的边界,不管另一个栈顶指针是否走到了数组的边界,都需要扩容,以保栈的正常操作。
缺陷:浪费空间,空间的利用率降低。