题目:
实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈内最小元素的操作
要求:
- pop, push, getMin操作的时间复杂度都是O(1)
- 设计的栈类型可以使用现成的栈结构
解答:
使用辅助栈
使用两个栈,一个栈完成基础的操作,这样pop,push的时间复杂度都是O(1)。然后使用辅助栈完成getMin的功能。
辅助栈内的存储也有两种方式:
- 辅助栈内元素的数量与基础栈内元素数量一致,对应位置上存储当前时刻的最小值。
- 辅助栈内的元素数量少于基础栈内元素数量,如果对应位置上的最小值已存在则不进行存储。
实现1:
|
|
实现2: